MjAwNDAyMTgKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEhhbmRsZSBjYXNlIHdoZXJlIGtyYjUtY29uZmlnIC0tbGlicyByZXR1cm5zIGEKICAgcGF0aCB3aXRoIGEgIi0iIGluIGl0LiAgRnJvbSBTZXJnaW8uR2VsYXRvIGF0IGFzdHJvLnN1LnNlLgoKMjAwNDAyMTcKIC0gKGRqbSkgU2ltcGxpZnkgdGhlIGxpY2Vuc2Ugb24gY29kZSBJIGhhdmUgd3JpdHRlbi4gTm8gY29kZSBjaGFuZ2VzLgogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA0LzAyLzE3IDA1OjM5OjUxCiAgICAgW3NmdHAtY2xpZW50LmMgc2Z0cC1jbGllbnQuaCBzZnRwLWdsb2IuYyBzZnRwLWdsb2IuaCBzZnRwLWludC5jXQogICAgIFtzZnRwLWludC5oIHNmdHAuY10KICAgICBzd2l0Y2ggdG8gbGljZW5zZS50ZW1wbGF0ZSBmb3IgY29kZSB3cml0dGVuIGJ5IG1lIChiZWxhdGVkLCBJIGtub3cuLi4pCiAtIChkam0pIEJ1ZyAjNjk4OiBTcGVjaWZ5IEZJTEU6IGZvciBLUkI1Q0NOQU1FOyBwYXRjaCBmcm9tIAogICBzdGFkYWxAc3VzZS5jeiBhbmQgc2ltb25Ac3h3Lm9yZy51awogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIFRpZHkgdXAgUEFNIGRlYnVnZ2luZy4gIG9rIGRqbUAKIC0gKGR0dWNrZXIpIFthdXRoLXBhbS5jXSBTdG9yZSBvdXRwdXQgZnJvbSBwYW1fc2Vzc2lvbiBhbmQgcGFtX3NldGNyZWQgZm9yCiAgIGRpc3BsYXkgYWZ0ZXIgbG9naW4uICBTaG91bGQgZml4IHByb2JsZW1zIGxpa2UgcGFtX21vdGQgbm90IGRpc3BsYXlpbmcKICAgYW55dGhpbmcsIG5vdGljZWQgYnkgY2p3YXRzb24gYXQgZGViaWFuLm9yZy4gIG9rIGRqbUAKCjIwMDQwMjEyCiAtICh0aW0pIFtNYWtlZmlsZS5pbiByZWdyZXNzL3NmdHAtYmFkY21kcy5zaCByZWdyZXNzL3Rlc3QtZXhlYy5zaF0KICAgUG9ydGFibGl0eSBmaXhlcy4gRGF0YSBzZnRwIHRyYW5zZmVycyBuZWVkcyB0byBiZSB3b3JsZCByZWFkYWJsZS4gU29tZQogICBvbGRlciBzaGVsbHMgaGFuZyBvbiB3aGlsZSBsb29wcyB3aGVuICBkb2luZyBzaCAtbiBzb21lX3NjcmlwdC4gT0sgZHR1Y2tlckAKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gTWFrZSBzdXJlIC1sY3J5cHRvIGlzIGJlZm9yZSAtbHNvY2tldCBmb3Igc2NvMy4KICAgb2sgbW91cmluZ0AKCjIwMDQwMjExCiAtIChkdHVja2VyKSBbYXV0aC1wYXNzd2QuYyBhdXRoLXNoYWRvdy5jXSBPbmx5IGVuYWJsZSBzaGFkb3cgZXhwaXJ5IGNoZWNrCiAgIGlmIEhBU19TSEFET1dfRVhQSVJZIGlzIHNldC4KIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gRml4IGNvbW1lbnQgdG8gbWF0Y2ggY29kZSBjaGFuZ2VzIGluIHZlciAxLjExNwoKMjAwNDAyMTAKIC0gKGR0dWNrZXIpIFthdXRoLXBhc3N3ZC5jIGF1dGguaCBvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5jCiAgIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4LmhdIEJ1ZyAjMTQ6IFVzZSBkb19wd2NoYW5nZSB0byBzdXBwb3J0IEFJWCdzCiAgIG5hdGl2ZSBwYXNzd29yZCBleHBpcnkuCiAtIChkdHVja2VyKSBbTElDRU5DRSBNYWtlZmlsZS5pbiBhdXRoLXBhc3N3ZC5jIGF1dGgtc2hhZG93LmMgYXV0aC5jIGF1dGguaAogICBkZWZpbmVzLmhdIEJ1ZyAjMTQ6IFVzZSBkb19wd2NoYW5nZSB0byBzdXBwb3J0IHBhc3N3b3JkIGV4cGlyeSBhbmQgZm9yY2UKICAgY2hhbmdlIGZvciBwbGF0Zm9ybXMgdXNpbmcgL2V0Yy9zaGFkb3cuICBvayBkam1ACiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvZmFrZS1yZmMyNTUzLmhdIEJ1ZyAjNTYzOiBQcmVwZW5kIHNzaF8gdG8gY29tcGF0CiAgIGZ1bmN0aW9ucyB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBIZWltZGFsJ3MgbGlicm9rZW4uICBvayBkam1ACiAtIChkdHVja2VyKSBbYXV0aC1wYW0uYyBhdXRoLXBhbS5oIHNlc3Npb24uY10gQnVnICMxNDogVXNlIGRvX3B3Y2hhbmdlIHRvCiAgIGNoYW5nZSBleHBpcmVkIFBBTSBwYXNzd29yZHMgZm9yIFNTSHYxIGNvbm5lY3Rpb25zIHdpdGhvdXQgcHJpdnNlcC4KICAgcGFtX2NoYXV0aHRvayBpcyBzdGlsbCB1c2VkIHdoZW4gcHJpdnNlcCBpcyBkaXNhYmxlZC4gIG9rIGRqbUAKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5jIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4LmhdIE1vdmUKICAgaW5jbHVkZSBmcm9tIHBvcnQtYWl4LmggdG8gcG9ydC1haXguYyBhbmQgcmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9uCiAgIGRlZmluaXRpb24uICBGaXhlcyBidWlsZCBlcnJvcnMgb24gQUlYLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hYyBsb2dpbnJlYy5jXSBCdWcgIzQ2NDogVXNlIHVwZHd0bXB4IG9uIHBsYXRmb3JtcwogICB0aGF0IHN1cHBvcnQgaXQuICBmcm9tICYgb2sgbW91cmluZ0AKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjMzQ1OiBEbyBub3QgZGlzYWJsZSB1dG1wIG9uIEhQLVVYIDEwLnguCiAgIG9rIGRqbUAKCjIwMDQwMjA3CiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNC8wMi8wNiAyMzo0MToxMwogICAgIFtjaXBoZXItY3RyLmNdCiAgICAgVXNlIEVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGggZm9yIGtleSBsZW5ndGguICBvayBtYXJrdXNACiAgICAgKFRoaXMgd2lsbCBmaXggYnVpbGRzIHdpdGggT3BlblNTTCAwLjkuNSkKIC0gKGR0dWNrZXIpIFtjaXBoZXIuY10gZW5hYmxlIEFFUyBjb3VudGVyIG1vZGVzIHdpdGggT3BlblNTTCAwLjkuNS4KICAgb2sgZGptQCwgbWFya3VzQAoKMjAwNDAyMDYKIC0gKGR0dWNrZXIpIFthY3NzLmMgYWNzcy5oXSBGaXggJElkIHRhZ3MuCiAtIChkdHVja2VyKSBbY2lwaGVyLWFjc3MuYyBjaXBoZXIuY10gRW5hYmxlIGFjc3Mgb25seSBpZiBidWlsZGluZyB3aXRoCiAgIE9wZW5TU0wgPj0gMC45LjcuICBvayBkam1ACiAtIChkdHVja2VyKSBbc2Vzc2lvbi5jXSBCdWcgIzc4OTogRG8gbm90IGNhbGwgZG9fcGFtX3NldGNyZWQgYXMgYSBub24tcm9vdAogICB1c2VyLCBzaW5jZSBzb21lIG1vZHVsZXMgbWlnaHQgZmFpbCBkdWUgdG8gbGFjayBvZiBwcml2aWxlZ2UuICBvayBkam1ACiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzc0ODogQWx3YXlzIGRlZmluZSBCUk9LRU5fR0VUQUREUklORk8KICAgZm9yIEhQLVVYIDExLjExLiAgSWYgdGhlcmUgYXJlIGtub3duLWdvb2QgY29uZmlncyB3aGVyZSB0aGlzIGlzIG5vdAogICByZXF1aXJlZCwgcGxlYXNlIHJlcG9ydCB0aGVtLiAgb2sgZGptQAogLSAoZHR1Y2tlcikgW3NzaGQuY10gQnVnICM3NTc6IENsZWFyIGNoaWxkJ3MgZW52aXJvbm1lbnQgdG8gcHJldmVudAogICBhY2NpZGVudGFsbHkgaW5oZXJpdGluZyBmcm9tIHJvb3QncyBlbnZpcm9ubWVudC4gIG9rIGRqbUAKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5jIG9wZW5ic2QtY29tcGF0L3BvcnQtYWl4LmhdIEJ1ZyAjNzk2OgogICBSZXN0b3JlIHByZXZpb3VzIGF1dGhkYiBzZXR0aW5nIGFmdGVyIGF1dGggY2FsbHMuICBGaXhlcyBwcm9ibGVtcyB3aXRoCiAgIHNldHBjcmVkIGZhaWxpbmcgb24gYWNjb3VudHMgdGhhdCB1c2UgQUZTIG9yIE5JUyBwYXNzd29yZCByZWdpc3RyaWVzLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hYyBpbmNsdWRlcy5oXSBJbmNsdWRlIDxzeXMvc3RyZWFtLmg+IGlmIHByZXNlbnQsCiAgIHJlcXVpcmVkIG9uIFNvbGFyaXMgMi41LjEgZm9yIHF1ZXVlX3QsIHdoaWNoIGlzIHVzZWQgYnkgPHN5cy9wdG1zLmg+LgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNC8wMS8zMCAwOTo0ODo1NwogICAgIFthdXRoLXBhc3N3ZC5jIGF1dGguaCBwYXRobmFtZXMuaCBzZXNzaW9uLmNdCiAgICAgc3VwcG9ydCBmb3IgcGFzc3dvcmQgY2hhbmdlOyBvayBkdHVja2VyQAogICAgIChzZXQgcGFzc3dvcmQtZGVhZD0xdyBpbiBsb2dpbi5jb25mIHRvIHVzZSB0aGlzKS4KICAgICBJbiAtUG9ydGFibGUsIHRoaXMgaXMgY3VycmVudGx5IG9ubHkgcGxhdGZvcm1zIHVzaW5nIGJzZGF1dGguCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwNC8wMi8wNSAwNTozNzoxNwogICAgIFttb25pdG9yLmMgc3NoZC5jXQogICAgIFBhc3MgU0lHQUxSTSB0aHJvdWdoIHRvIHByaXZzZXAgY2hpbGQgaWYgTG9naW5HcmFjZVRpbWUgZXhwaXJlcy4gb2sgbWFya3VzQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNC8wMi8wNSAxNTozMzozMwogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgZml4IEVUQSBmb3IgPiA0R0I7IGJ1Z3ppbGxhICM3OTE7IG9rIGhlbm5pbmdAIGRlcmFhZHRACgoyMDA0MDEyOQogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYyByZWdyZXNzLwogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTAvMTEgMTE6NDk6NDkKICAgICBbTWFrZWZpbGUgYmFubmVyLnNoXQogICAgIFRlc3QgbWlzc2luZyBiYW5uZXIgZmlsZSwgc3VwcHJlc3Npb24gb2YgYmFubmVyIHdpdGggc3NoIC1xLCBjaGVjayByZXR1cm4KICAgICBjb2RlIGZyb20gc3NoLiAgb2sgbWFya3VzQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8wNyAxMDoxNjo0NAogICAgIFtzc2gtY29tLnNoXQogICAgIGFkcmVzcyAtPiBhZGRyZXNzLCBhbmQgYSBmZXcgbW9yZTsgYWxsIGZyb20gSm9uYXRob24gR3JheTsKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDQvMDEvMTMgMDk6NDk6MDYKICAgICBbc2Z0cC1iYXRjaC5zaF0KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEFkZCAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrLiAgRmVlZGJhY2sgZnJvbQogICB0aW1ALCBvayBzZXZlcmFsCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjIG9wZW5ic2QtY29tcGF0L2JzZC1jcmF5LmMgb3BlbmJzZC1jb21wYXQvYnNkLWNyYXkuaF0KICAgQnVnICM3NzU6IENyYXkgZml4ZXMgZnJvbSB3ZW5keSBhdCBjcmF5LmNvbQoKMjAwNDAxMjgKIC0gKGR0dWNrZXIpIFtyZWdyZXNzL1JFQURNRS5yZWdyZXNzXSBBZGQgdGNwd3JhcHBlcnMgaXNzdWUsIG5vdGVkIGJ5IHRpbUAKIC0gKGR0dWNrZXIpIFttb2R1bGldIEltcG9ydCBuZXcgbW9kdWxpIGZpbGUgZnJvbSBPcGVuQlNELgoKMjAwNDAxMjcKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGhzaG9leGVyQGN2cy5vcGVuYnNkLm9yZyAyMDA0LzAxLzIzIDE3OjA2OjAzCiAgICAgW2NpcGhlci5jXQogICAgIGVuYWJsZSBhY3NzIGZvciBzc2gKICAgICBvayBkZXJhYWR0QCBtYXJrdXNACiAgIC0gbW91cmluZ0BjdnMub3BlbmJzZC5vcmcgMjAwNC8wMS8yMyAxNzo1Nzo0OAogICAgIFtzZnRwLWludC5jXQogICAgIEZpeCBpc3N1ZSBwb2ludGVkIG91dCB3aXRoIGxzIG5vdCBoYW5kbGluZyBsYXJnZSBkaXJlY3RvcmllcyAKICAgICB3aXRoIGVtYmVkZWQgcGF0aHMgY29ycmVjdGx5LiAgT0sgZGFtaWVuQAogICAtIGhzaG9leGVyQGN2cy5vcGVuYnNkLm9yZyAyMDA0LzAxLzIzIDE5OjI2OjMzCiAgICAgW2NpcGhlci5jXQogICAgIHJlbmFtZSBhY3NzQG9wZWJzZC5vcmcgdG8gYWNzc0BvcGVuc3NoLm9yZwogICAgIG9rIGRlcmFhZHRACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA0LzAxLzI1IDAzOjQ5OjA5CiAgICAgW3NzaGNvbm5lY3QuY10KICAgICByZXNldCBub25ibG9ja2luZyBmbGFnIGFmdGVyIENvbm5lY3RUaW1lb3V0ID4gMCBjb25uZWN0OyAoYnVnemlsbGEgIzc4NSkKICAgICBmcm9tIGpjbG9uZ3VldCBBVCBmcmVlLmZyOyBvayBtaWxsZXJ0QAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNC8wMS8yNyAxMDowODoxMAogICAgIFtzZnRwLmNdCiAgICAgcmVvcmRlciBwYXJzaW5nIHNvIHVzZXI6c2tleUBob3N0OmZpbGUgd29ya3MgKGJ1Z3ppbGxhICM3NzcpCiAgICAgcGF0Y2ggZnJvbSBhZG1vcnRlbiBBVCB1bWljaC5lZHU7IG9rIG1hcmt1c0AKIC0gKGRqbSkgW2Fjc3MuYyBhY3NzLmggY2lwaGVyLWFjc3MuY10gUG9ydGFibGUgc3VwcG9ydCBmb3IgQUNTUyAKICAgaWYgbGliY3J5cHRvIGxhY2tzIGl0CgoyMDA0MDEyNgogLSAodGltKSBUeXBvIGluIHJlZ3Jlc3MvUkVBRE1FLnJlZ3Jlc3MKIC0gKHRpbSkgW3JlZ3Jlc3MvdGVzdC1leGVjLnNoXSBSaG9zdHNBdXRoZW50aWNhdGlvbiBpcyBkZXByZWNhdGVkLgogLSAodGltKSBbZGVmaW5lcy5oXSBBZGQgZGVmaW5lcyBmb3IgSEZJWEVEU1ogYW5kIFRfU0lHCiAtICh0aW0pIFtjb25maWd1cmUuYWMgaW5jbHVkZXMuaF0gYWRkIDxzeXMvcHRtcy5oPiBmb3IgZ3JhbnRwdCgpIGFuZCBmcmllbmRzLgogLSAodGltKSBbZGVmaW5lcy5oIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmhdIE1vdmUgZGVmaW5lcyBmb3IgSEZJWEVEU1oKICAgYW5kIFRfU0lHIHRvIGdldHJyc2V0YnluYW1lLmgKCjIwMDQwMTI0CiAtIChkam0pIFR5cG8gaW4gb3BlbmJzZC1jb21wYXQvYnNkLW9wZW5wdHkuYzsgZnJvbSB3ZW5keXAgQVQgY3JheS5jb20KCjIwMDQwMTIzIAogLSAoZGptKSBEbyBwYW1fc2Vzc2lvbiBwcm9jZXNzaW5nIGZvciBzeXN0ZW1zIHdpdGggSEFWRV9MT0dJTl9DQVA7IGZyb20gCiAgIHJhbGYuaGFjayBBVCBwaXBleC5uZXQ7IG9rIGR0dWNrZXJACiAtIChkam0pIEJ1ZyAjNzc2OiBVcGRhdGUgY29udHJpYi9yZWRoYXQvb3BlbnNzaC5zcGVjIHRvIGR5bmFtaWNhbGx5IGRldGVjdAogICBLZXJiZXJvcyBsb2NhdGlvbiAoYW5kIHRodXMgd29yayB3aXRoIEZlZG9yYSBDb3JlIDEpOwogICBmcm9tIGphc29uIEFUIGRldnJhbmRvbS5vcmcKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNzg4OiBUZXN0IGZvciB6bGliLmggcHJlc2VuY2UgYW5kIGZvcgogICB6bGliID49IDEuMS40LiAgUGFydGx5IGZyb20gamJhc25leSBhdCBuY3NhLnVpdWMuZWR1LiAgb2sgZGptQAogLSAoZHR1Y2tlcikgW2NvbnRyaWIvY3lnd2luL1JFQURNRV0gRG9jdW1lbnQgbmV3IHNzaC1ob3N0LWNvbmZpZyBvcHRpb25zLgogICBQYXRjaCBmcm9tIHZpbnNjaGVuIGF0IHJlZGhhdC5jb20uCiAtIChkdHVja2VyKSBbYWNjb25maWcuaCBjb25maWd1cmUuYWMgaW5jbHVkZXMuaCBzZXJ2Y29uZi5jIHNlc3Npb24uY10KICAgQ2hhbmdlIEFGUyBzeW1ib2wgdG8gVVNFX0FGUyB0byBwcmV2ZW50IG5hbWVzcGFjZSBjb2xsaXNpb25zLCBkbyBub3QKICAgaW5jbHVkZSBrYWZzLmggdW5sZXNzIG5lY2Vzc2FyeS4gIEZyb20gZGVlbmdlcnQgYXQgYW5sLmdvdi4KIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gUmVtb3ZlIGhhcmQgY29kZWQgLUwvdXNyL2xvY2FsL2xpYiBhbmQKICAgLUkvdXNyL2xvY2FsL2luY2x1ZGUuIFVzZXJzIGNhbiBkbyBMREZMQUdTPSItTC91c3IvbG9jYWwvbGliIiBcCiAgIENQUEZMQUdTPSItSS91c3IvbG9jYWwvaW5jbHVkZSIgLi9jb25maWd1cmUgaWYgbmVlZGVkLgoKMjAwNDAxMjIKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIFVzZSBrcmI1LWNvbmZpZyB3aGVyZSBhdmFpbGFibGUgZm9yIEtlcmJlcm9zLwogICBHU1NBUEkgZGV0ZWN0aW9uLCBsaWJzIGFuZCBpbmNsdWRlcy4gIG9rIGRqbUAKIC0gKGR0dWNrZXIpIFtzZXNzaW9uLmNdIEVuYWJsZSBBRlMgc3VwcG9ydCBpbiBjb25qdW5jdGlvbiB3aXRoIEtSQjUgbm90CiAgIGp1c3QgSEVJTURBTC4KIC0gKHRpbSkgW2NvbnRyaWIvc29sYXJpcy9idWlsZHBrZy5zaF0gQWxsb3cgZm9yIHRoZSBwb3NzaWJpbGl0eSBvZgogICAvdXNyL2xvY2FsIGJlaW5nIGEgc3ltYm9saWMgbGluay4gRml4ZXMgcHJvYmxlbSByZXBvcnRlZCBieSBIZW5yeSBHcmVibGVyLgoKMjAwNDAxMjEKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwNC8wMS8xMyAwOToyNTowNQogICAgIFtzZnRwLWludC5jIHNmdHAuMSBzZnRwLmNdCiAgICAgVGlkeSBzZnRwIGJhdGNobW9kZSBoYW5kbGluZywgZWxpbWluYXRlIGp1bmsgdG8gc3RkZXJyIChidWd6aWxsYSAjNzU0KSBhbmQKICAgICBlbmFibGUgdXNlIG9mICItYiAtIiB0byBhY2NlcHQgYmF0Y2hmaWxlIGZyb20gc3RkaW47IG9rIG1hcmt1c0AKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDQvMDEvMTMgMTI6MTc6MzMKICAgICBbc2Z0cC4xXQogICAgIHJlbW92ZSB1bm5lY2Vzc2FyeSBJYydzOwogICAgIGtpbGwgd2hpdGVzcGFjZSBhdCBFT0w7CiAgICAgb2sgZGptQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNC8wMS8xMyAxOToyMzoxNQogICAgIFtjb21wcmVzcy5jIHNlc3Npb24uY10KICAgICAtV2FsbDsgb2sgaGVubmluZwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNC8wMS8xMyAxOTo0NToxNQogICAgIFtjb21wcmVzcy5jXQogICAgIGNhc3QgZm9yIHBvcnRhYmlsaXR5OyBtaWxsZXJ0QAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwNC8wMS8xOSAwOToyNDoyMQogICAgIFtjaGFubmVscy5jXQogICAgIGZha2UgY29uc3VtcHRpb24gZm9yIGhhbGYgY2xvc2VkIGNoYW5uZWxzIHNpbmNlIHRoZSBwZWVyIGlzIHdhaXRpbmcgZm9yCiAgICAgd2luZG93IGFkanVzdCBtZXNzYWdlczsgYnVnemlsbGEgIzc5MCBNYXR0aGV3IERpbGxvbjsgdGVzdCArIG9rIGR0dWNrZXJACiAgICAgcmVwcm9kdWNlIHdpdGggc2ggLWMgJ3VsaW1pdCAtZiAxMDsgc3NoIGhvc3QgLW4gb2QgL2JzZCB8IGNhdCA+IGZvbycKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDQvMDEvMTkgMjE6MjU6MTUKICAgICBbYXV0aDItaG9zdGJhc2VkLmMgYXV0aDItcHVia2V5LmMgc2VydmVybG9vcC5jIHNzaC1rZXlzaWduLmMgc3NoY29ubmVjdDIuY10KICAgICBmaXggbWVtIGxlYWtzOyBzb21lIGZpeGVzIGZyb20gUGV0ZSBGbHVnc3RhZDsgdGVzdGVkIGR0dWNrZXJACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDA0LzAxLzIxIDAzOjA3OjU5CiAgICAgW3NmdHAuY10KICAgICBpbml0aWFsaXNlIGluZmlsZSBpbiBtYWluLCByYXRoZXIgdGhhbiBzdGF0aWNhbGx5IC0gZnJvbSBwb3J0YWJsZQogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDQvMDEvMTEgMjE6NTU6MDYKICAgICBbc3NocHR5LmNdCiAgICAgZm9yIHB0eSBvcGVuaW5nLCBvbmx5IHVzZSB0aGUgb3BlbnB0eSgpIHBhdGguICB0aGUgb3RoZXIgc3R1ZmYgb25seSBuZWVkcwogICAgIHRvIGJlIGluIG9wZW5zc2gtcDsgbWFya3VzIG9rCiAtIChkam0pIFtvcGVuYnNkLWNvbXBhdC9ic2Qtb3BlbnB0eS5jXSBSZXdvcmsgb2xkIHNzaHB0eS5jIGNvZGUgaW50byBhbgogICBvcGVucHR5KCkgcmVwbGFjZW1lbnQKCjIwMDQwMTE0CiAtIChkdHVja2VyKSBbYXV0aC1wYW0uY10gSGF2ZSBtb25pdG9yIGRpZSBpZiBQQU0gYXV0aGVudGljYXRpb24gdGhyZWFkIGV4aXRzCiAgIHVuZXhwZWN0ZWRseS4gIHdpdGggJiBvayBkam1ACiAtIChkdHVja2VyKSBbYXV0aC1wYW0uY10gUmVzZXQgc2lnbmFsIGhhbmRsZXIgaW4gcHRocmVhZF9jYW5jZWwgdG9vLCBhZGQKICAgdGVzdCBmb3IgY2FzZSB3aGVyZSBjbGVhbnVwIGhhcyBhbHJlYWR5IHJ1bi4KIC0gKGR0dWNrZXIpIFthdXRoLXBhbS5jXSBBZGQgbWlub3IgZGVidWdnaW5nLgoKMjAwNDAxMTMKIC0gKGR0dWNrZXIpIFthdXRoLXBhbS5jXSBSZWxvY2F0ZSBzdHJ1Y3QgcGFtX2N0eHQgYW5kIHByb3RvdHlwZXMuICBObwogICBmdW5jdGlvbmFsIGNoYW5nZXMuCgoyMDA0MDEwOAogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmMgZGVmaW5lcy5oXSBCdWcgIzc4MzogbW92ZSBfX3VudXNlZCB0byBkZWZpbmVzLmggYW5kCiAgIG9ubHkgZGVmaW5lIGlmIG5vdCBhbHJlYWR5LiAgRnJvbSBkZXMgYXQgZnJlZWJzZC5vcmcuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBSZW1vdmUgZXh0cmEgKHR5cG8pIGNvbW1hLgoKMjAwNDAxMDUKIC0gKGR0dWNrZXIpIFtjb250cmliL3NzaC1jb3B5LWlkXSBCdWcgIzc4MTogZXhpdCBpZiBzc2ggZmFpbHMuICBQYXRjaCBmcm9tCiAgIGNqd2F0c29uIGF0IGRlYmlhbi5vcmcuCiAtIChkdHVja2VyKSBbYWNjb25maWcuaCBjb25maWd1cmUuYWMgaW5jbHVkZXMuaCBzZXJ2Y29uZi5jIHNlc3Npb24uY10KICAgT25seSBlbmFibGUgS2VyYmVyb3NHZXRBRlNUb2tlbiBpZiBIZWltZGFsJ3MgbGlia2FmcyBpcyBmb3VuZC4gIHdpdGggamFrb2JACgoyMDA0MDEwMgogLSAoZGptKSBPU1gvRGFyd2luIG5lZWRzIEJJTkRfOF9DT01QQVQgdG8gYnVpbGQgZ2V0cnJzZXRieW5hbWUuIFJlcG9ydCBmcm9tCiAgIGpha29iQAogLSAoZGptKSBSZW1vdmUgdXNlbGVzcyBETlMgc3VwcG9ydCBjb25maWd1cmUgc3VtbWFyeSBtZXNzYWdlLiBmcm9tIGpha29iQAogLSAoZGptKSBPU1gvRGFyd2luIHB1dCB0aGUgUEFNIGhlYWRlcnMgaW4gYSBkaWZmZXJlbnQgcGxhY2UsIGRldGVjdCB0aGlzLgogICBSZXBvcnQgZnJvbSBqYWtvYkAKCjIwMDMxMjMxCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEyLzIyIDA5OjE2OjU4CiAgICAgW21vZHVsaS5jIHNzaC1rZXlnZW4uMSBzc2gta2V5Z2VuLmNdCiAgICAgdGlkeSB1cCBtb2R1bGkgZ2VuZXJhdGlvbiBkZWJ1Z2dpbmcsIGFkZCAtdiAodmVyYm9zZS9kZWJ1Zykgb3B0aW9uIHRvCiAgICAgc3NoLWtleWdlbjsgb2sgbWFya3VzQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMi8yMiAyMDoyOTo1NQogICAgIFtjaXBoZXItM2RlczEuY10KICAgICBFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCkgZm9yIHRoZSBkZXMgY29udGV4dHM7IHBydWlrc21hQGZyZWVzdXJmLmZyCiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMjMgMTY6MTI6MTAKICAgICBbc2VydmNvbmYuYyBzZXJ2Y29uZi5oIHNlc3Npb24uYyBzc2hkX2NvbmZpZ10KICAgICBpbXBsZW1lbnQgS2VyYmVyb3NHZXRBRlNUb2tlbiBzZXJ2ZXIgb3B0aW9uLiBvayBtYXJrdXNALCBiZWNrQAogICAtIG1pbGxlcnRAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMjkgMTY6Mzk6NTAKICAgICBbc3NoZF9jb25maWddCiAgICAgS2VlcEFsaXZlIGhhcyBiZWVuIG9ic29sZXRlZCwgdXNlIFRDUEtlZXBBbGl2ZSBpbnN0ZWFkOyBtYXJrdXNAIE9LCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMi8zMSAwMDoyNDo1MAogICAgIFthdXRoMi1wYXNzd2QuY10KICAgICBJZ25vcmUgcGFzc3dvcmQgY2hhbmdlIHJlcXVlc3QgZHVyaW5nIHBhc3N3b3JkIGF1dGggKHdoaWNoIHdlIGN1cnJlbnRseQogICAgIGRvbid0IHN1cHBvcnQpIGFuZCBkaXNjYXJkIHByb3Bvc2VkIG5ldyBwYXNzd29yZC4gIGNvcnJlY3Rpb25zL29rIG1hcmt1c0AKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIE9ubHkgdGVzdCBzZXRyZXN1aWQgYW5kIHNldHJlc2dpZCBpZiB0aGV5IGV4aXN0LgoKMjAwMzEyMTkKIC0gKGR0dWNrZXIpIFtkZWZpbmVzLmhdIEJ1ZyAjNDU4OiBEZWZpbmUgU0laRV9UX01BWCBhcyBVSU5UX01BWCBpZiB3ZQogICB0eXBlZGVmIHNpemVfdCBvdXJzZWx2ZXMuCgoyMDAzMTIxOAogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gRG9uJ3QgdXNlIHNldHJlW3VnXWlkIG9uIERHLVVYLCBmcm9tIFRvbSBPcmJhbi4KIC0gKGR0dWNrZXIpIFthdXRoLXBhbS5jXSBEbyBQQU0gY2hhdXRodG9rIGR1cmluZyBTU0gyIGtleWJvYXJkLWludGVyYWN0aXZlCiAgIGF1dGhlbnRpY2F0aW9uLiAgUGFydGlhbGx5IGZpeGVzIGJ1ZyAjNDIzLiAgRmVlZGJhY2sgJiBvayBkam1ACgoyMDAzMTIxNwogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEyLzA5IDE1OjI4OjQzCiAgICAgW3NlcnZlcmxvb3AuY10KICAgICBtYWtlIENsaWVudEtlZXBBbGl2ZSB3b3JrIGZvciBzc2ggLU4sIHRvbyAobm8gbG9naW4gc2hlbGwgcmVxdWVzdGVkKS4KICAgICAxKSBzZW5kIGEgYm9ndXMgY2hhbm5lbCByZXF1ZXN0IGlmIHdlIGZpbmQgYSBjaGFubmVsCiAgICAgMikgc2VuZCBhIGJvZ3VzIGdsb2JhbCByZXF1ZXN0IGlmIHdlIGRvbid0IGhhdmUgYSBjaGFubmVsCiAgICAgb2sgKyB0ZXN0IGJlY2tACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEyLzA5IDE3OjI5OjA0CiAgICAgW3NzaGQuY10KICAgICBmaXggLW8gYW5kIEhVUDsgb2sgaGVubmluZ0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMDkgMTc6MzA6MDUKICAgICBbc3NoLmNdCiAgICAgZG9uJ3QgbW9kaWZ5IGFyZ3YgZm9yIHNzaCAtbzsgc2ltaWxhciB0byBzc2hkLmMgMS4yODMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMDkgMjE6NTM6MzcKICAgICBbcmVhZGNvbmYuYyByZWFkY29uZi5oIHNjcC4xIHNlcnZjb25mLmMgc2VydmNvbmYuaCBzZnRwLjEgc3NoLjFdCiAgICAgW3NzaF9jb25maWcuNSBzc2hjb25uZWN0LmMgc3NoZC5jIHNzaGRfY29uZmlnLjVdCiAgICAgcmVuYW1lIGtlZXBhbGl2ZSB0byB0Y3BrZWVwYWxpdmU7IHRoZSBvbGQgbmFtZSBjYXVzZXMgdG9vIG11Y2gKICAgICBjb25mdXNpb247IG9rIGRqbSwgZHR1Y2tlcjsgd2l0aCBoZWxwIGZyb20gam1jQAogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMDkgMjM6NDU6MzIKICAgICBbY2xpZW50bG9vcC5jXQogICAgIENsZWFyIGV4aXQgY29kZSB3aGVuIHNzaCAtTiBpcyB0ZXJtaW5hdGVkIHdpdGggYSBTSUdURVJNLiAgb2sgbWFya3VzQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMi8xNCAxMjozNzoyMQogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgd2UgZG9uJ3Qgc3VwcG9ydCBHU1MgS0VYOyBmcm9tIFNpbW9uIFdpbGtpbnNvbgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMi8xNiAxNTo0OTo1MQogICAgIFtjbGllbnRsb29wLmMgY2xpZW50bG9vcC5oIHJlYWRjb25mLmMgcmVhZGNvbmYuaCBzY3AuMSBzZnRwLjEgc3NoLjFdCiAgICAgW3NzaC5jIHNzaF9jb25maWcuNV0KICAgICBhcHBsaWNhdGlvbiBsYXllciBrZWVwIGFsaXZlIChTZXJ2ZXJBbGl2ZUludGVydmFsIFNlcnZlckFsaXZlQ291bnRNYXgpCiAgICAgZm9yIHNzaCgxKSwgc2ltaWxhciB0byB0aGUgc3NoZCg4KSBvcHRpb247IG9rIGJlY2tAOyB3aXRoIGhlbHAgZnJvbQogICAgIGptYyBhbmQgZHR1Y2tlckAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMTYgMTU6NTE6NTQKICAgICBbZGguY10KICAgICB1c2UgPD0gaW5zdGVhZCBvZiA8IGluIGRoX2VzdGltYXRlOyBvayBwcm92b3MvaHNob2V4ZXI7IAogICAgIGRvIG5vdCByZXR1cm4gPCBESF9HUlBfTUlOCiAtIChkdHVja2VyKSBbYWNjb25maWcuaCBjb25maWd1cmUuYWMgdWlkc3dhcC5jXSBCdWcgIzY0NTogQ2hlY2sgZm9yCiAgIHNldHJlc1t1Z11pZCgpIHByZXNlbnQgYnV0IG5vdCBpbXBsZW1lbnRlZCAoZWcgc29tZSBMaW51eC9nbGliYwogICBjb21iaW5hdGlvbnMpLgogLSAoYmFsKSBbb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuY10gdW5zZXQgJ3NpZ25hbCcgZGVmaW5lZCBpZiB3ZSBhcmUKICAgdXNpbmcgYSByZWFsICdzaWduYWwoKScgKE5vdGljZWQgYnkgYSBOZVhUIENvbXBpbGUpCgoyMDAzMTIwOQogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hdHRoaWV1QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzI1IDIzOjEwOjA4CiAgICAgW3NzaC1hZGQuMV0KICAgICBzc2gtYWRkIGRvZXNuJ3QgbmVlZCB0byBiZSBhIGRlc2NlbmRhbnQgb2Ygc3NoLWFnZW50LiBPayBtYXJrdXNALCBqbWNALgogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8yNiAyMTo0NDoyOQogICAgIFtjaXBoZXItYWVzLmNdCiAgICAgZml4ICNpZmRlZiBiZWZvcmUgI2RlZmluZTsgb2sgbWFya3VzQAogICAgIChSQ1MgSUQgc3luYyBvbmx5LCBQb3J0YWJsZSBhbHJlYWR5IGhhZCB0aGlzKQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMi8wMiAxMjoxNToxMAogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgaW1wcm92bWVudHMgZnJvbSBhbmRyZWFzQDoKICAgICAqIHNhbmVyIHNwZWVkIGVzdGltYXRlIGZvciB0cmFuc2ZlcnMgdGhhdCB0YWtlcyBsZXNzIHRoYW4gYSBzZWNvbmQgYnkKICAgICAgIHJvdW5kaW5nIHRoZSB0aW1lIHRvIDEgc2Vjb25kLgogICAgICogd2hlbiB0aGUgdHJhbnNmZXIgaXMgZmluaXNoZWQgY2FsY3VsYXRlIHRoZSBhY3R1YWwgdG90YWwgc3BlZWQKICAgICAgIHJhdGhlciB0aGFuIHRoZSBjdXJyZW50IHNwZWVkIHdoaWNoIGlzIGdpdmVuIGR1cmluZyB0aGUgdHJhbnNmZXIKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMDIgMTc6MDE6MTUKICAgICBbY2hhbm5lbHMuYyBzZXNzaW9uLmMgc3NoLWFnZW50LmMgc3NoLmggc3NoZC5jXQogICAgIHVzZSBTU0hfTElTVEVOX0JBQ0tMT0cgKD0xMjgpIGluIGxpc3RlbigyKS4KICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMDcgMDY6MzQ6MTgKICAgICBbbW9kdWxpLmNdCiAgICAgcmVtb3ZlIHVudXNlZCBkZWJ1Z2dpbmcgI2RlZmluZSB0ZW1wbGF0ZXMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTIvMDggMTE6MDA6NDcKICAgICBba2V4Z2V4Yy5jXQogICAgIHByaW50IHJlcXVlc3RlZCBncm91cCBzaXplIGluIGRlYnVnOyBvayBkam0KICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEyLzA5IDEzOjUyOjU1CiAgICAgW21vZHVsaS5jXQogICAgIFByZXZlbnQgc3NoLWtleWdlbiAtVCBmcm9tIG91dHB1dHRpbmcgbW9kdWxpIHdpdGggYSBnZW5lcmF0b3Igb2YgMCwgc2luY2UKICAgICB0aGV5IGNhbid0IGJlIHVzZWQgZm9yIERpZmZpZS1IZWxsbWFuLiAgQXNzaXN0YW5jZSBhbmQgb2sgZGptQAogLSAoZHR1Y2tlcikgW3NzaC1rZXlzY2FuLmNdIFN5bmMgUkNTSURzLCBtaXNzZWQgaW4gU1NIX1NTRkRNQVggY2hhbmdlIGJlbG93LgoKMjAwMzEyMDgKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gQnVnIDc3MC4gRml4IC0td2l0aG91dC1ycGF0aC4KCjIwMDMxMTIzCiAtIChkam0pIFtjYW5vaG9zdC5jXSBNb3ZlIElQdjRpblY2IG1hcHBlZCBhZGRyZXNzIG5vcm1hbGlzYXRpb24gdG8gaXRzIG93bgogICBmdW5jdGlvbiBhbmQgY2FsbCBpdCB1bmNvbmRpdGlvbmFsbHkKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8yMyAyMzoxNzozNAogICAgIFtzc2gta2V5c2Nhbi5jXQogICAgIGZyb20gcG9ydGFibGUgLSB1c2Ugc3lzY29uZiB0byBkZXRlY3QgZmQgbGltaXQ7IG9rIG1hcmt1c0AKICAgICAodGlkeSBkaWZmIGJ5IGFkZGluZyBTU0hfU1NGRE1BWCBtYWNybyB0byBkZWZpbmVzLmgpCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzIzIDIzOjE4OjQ1CiAgICAgW3NzaC1rZXlnZW4uY10KICAgICBjb25zaXN0ZW5jeSBQQVRIX01BWCAtPiBNQVhQQVRITEVOOyBvayBtYXJrdXNACiAgICAgKFJDUyBJRCBzeW5jIG9ubHkpCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzIzIDIzOjIxOjIxCiAgICAgW3NjcC5jXQogICAgIGZyb20gcG9ydGFibGU6IHJlbmFtZSBjbGFzaGluZyB2YXJpYWJsZSBsaW1pdC0+IGxpbWl0X3JhdGU7IG9rIG1hcmt1c0AKICAgICAoUkNTIElEIHN5bmMgb25seSkKICAgLSBkdHVja2VyQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzI0IDAwOjE2OjM1CiAgICAgW3NzaC4xIHNzaC5jXQogICAgIE1ha2Ugc3NoIC1rIG1lYW4gR1NTQVBJRGVsZWdhdGVDcmVkZW50aWFscz1uby4gU3VnZ2VzdGlvbiAmIG9rIG1hcmt1c0AKIC0gKGRqbSkgQW5ub3RhdGUgT3BlbkJTRC1kZXJpdmVkIGZpbGVzIGluIG9wZW5ic2QtY29tcGF0LyB3aXRoIG9yaWdpbmFsIAogICBzb3VyY2UgZmlsZSBwYXRoIChpbiBPcGVuQlNEIHRyZWUpLgoKMjAwMzExMjIKIC0gKGR0dWNrZXIpIFtjaGFubmVscy5jXSBNYWtlIEFJWCB3cml0ZSBsaW1pdCBjb2RlIGNsZWFyZXIuICBTdWdnZXN0ZWQgYnkgZGptQAogLSAoZHR1Y2tlcikgW2F1dGgtcGFzc3dkLmMgb3BlbmJzZC1jb21wYXQvcG9ydC1haXguYyBvcGVuYnNkLWNvbXBhdC9wb3J0LWFpeC5oXQogICBNb3ZlIEFJWCBzcGVjaWZpYyBwYXNzd29yZCBhdXRoZW50aWNhdGlvbiBjb2RlIHRvIHBvcnQtYWl4LmMsIGNhbGwKICAgYXV0aGVudGljYXRlKCkgdW50aWwgcmVlbnRlciBmbGFnIGlzIGNsZWFyLgogLSAoZHR1Y2tlcikgW2F1dGgtc2lhLmMgY29uZmlndXJlLmFjXSBUcnU2NCB1cGRhdGUgZnJvbSBjbWFkYW1zIGF0IGhpd2FheS5uZXQuCiAgIFVzZSBwZXJtYW5lbnRseV9zZXRfdWlkIGZvciBTSUEsIG9ubHkgZGVmaW5lIERJU0FCTEVfRkRfUEFTU0lORyB3aGVuIFNJQQogICBpcyBlbmFibGVkLCByZWx5IG9uIFNJQSB0byBjaGVjayBmb3IgbG9ja2VkIGFjY291bnRzIGlmIGVuYWJsZWQuICBvayBkam1ACiAtIChkam0pIFtzY3AuY10gUmVuYW1lIGxpbWl0YncgLT4gbGltaXRfcmF0ZSB0byBtYXRjaCB1cHN0cmVhbWVkIHBhdGNoCiAtIChkam0pIFtzZnRwLWludC5jXSBSZW1vdmUgZHVwbGljYXRlZCBjb2RlIGZyb20gYm9ndXMgc3luYwogLSAoZGptKSBbcGFja2V0LmNdIFNodWZmbGUgI2lmZGVmIHRvIHJlZHVjZSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGNvZGUKCjIwMDMxMTIxCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTEvMjAgMTE6Mzk6MjgKICAgICBbcHJvZ3Jlc3NtZXRlci5jXQogICAgIGZpeCByb3VuZGluZyBlcnJvcnM7IGZyb20gYW5kcmVhc0AKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTEvMjEgMTE6NTc6MDMKICAgICBbZXZlcnl0aGluZ10KICAgICB1bmV4cGFuZCBhbmQgZGVsZXRlIHdoaXRlc3BhY2UgYXQgRU9MOyBvayBtYXJrdXNACiAgICAgKGRvbmUgbG9jYWxseSBhbmQgUkNTIElEcyBzeW5jZWQpCgoyMDAzMTExOAogLSAoZGptKSBGaXggZWFybHkgZXhpdCBmb3Igcm9vdCBhdXRoIHN1Y2Nlc3Mgd2hlbiBVc2VQQU09eWVzIGFuZCAKICAgUGVybWl0Um9vdExvZ2luPW5vCiAtIChkdHVja2VyKSBbYXV0aC1wYW0uY10gQ29udmVydCBjaGF1dGh0b2tfY29udiBpbnRvIGEgZ2VuZXJpYyB0dHlfY29udiwKICAgYW5kIHVzZSBpdCBmb3IgZG9fcGFtX3Nlc3Npb24uICBGaXhlcyBwcm9ibGVtcyBsaWtlIHBhbV9tb3RkIG5vdAogICBkaXNwbGF5aW5nIGFueXRoaW5nLiAgb2sgZGptQAogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIE9ubHkgdXNlIHBhbV9wdXRlbnYgaWYgb3VyIHBsYXRmb3JtIGhhcyBpdC4gb2sgZGptQAogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8xOCAwMDo0MDowNQogICAgIFtzZXJ2ZXJsb29wLmNdCiAgICAgQ29ycmVjdCBjaGVjayBmb3IgYXV0aGN0eHQtPnZhbGlkLiAgb2sgZGptQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8xOCAxMDo1MzowNwogICAgIFttb25pdG9yLmNdCiAgICAgdW5icmVhayBmYWtlIGF1dGhsb29wIGZvciBub24tZXhpc3RlbnQgdXNlcnMgKG15IHNjcmV3dXApLiBTcG90dGVkIGFuZAogICAgIHRlc3RlZCBieSBkdHVja2VyQDsgb2sgbWFya3VzQAoKMjAwMzExMTcKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8wMyAwOTowMzozNwogICAgIFthdXRoLWNoYWxsLmNdCiAgICAgbWFrZSB0aGlzIGEgbGl0dGxlIG1vcmUgaWRpb3QtcHJvb2Y7IG9rIG1hcmt1c0AKICAgICAoaW5jbHVkZXMgcG9ydGFibGUtc3BlY2lmaWMgY2hhbmdlcykKICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8wMyAwOTowOTo0MQogICAgIFtzc2hjb25uZWN0LmNdCiAgICAgbW92ZSBjaGFuZ2VkIGtleSB3YXJuaW5nIGludG8gd2Fybl9jaGFuZ2VkX2tleSgpLiBvayBtYXJrdXNACiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTEvMDMgMDk6Mzc6MzIKICAgICBbc3NoY29ubmVjdC5jXQogICAgIGRvIG5vdCBmcmVlIHN0YXRpYyB0eXBlIHBvaW50ZXIgaW4gd2Fybl9jaGFuZ2VkX2tleSgpCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzA0IDA4OjU0OjA5CiAgICAgW2F1dGgxLmMgYXV0aDIuYyBhdXRoMi1wdWJrZXkuYyBhdXRoLmggYXV0aC1rcmI1LmMgYXV0aC1wYXNzd2QuY10KICAgICBbYXV0aC1yaG9zdHMuYyBhdXRoLXJoLXJzYS5jIGF1dGgtcnNhLmMgbW9uaXRvci5jIHNlcnZlcmxvb3AuY10KICAgICBbc2Vzc2lvbi5jXQogICAgIHN0YW5kYXJkaXNlIGFyZ3VtZW50cyB0byBhdXRoIG1ldGhvZHMgLSB0aGV5IHNob3VsZCBhbGwgdGFrZSBhdXRoY3R4dC4KICAgICBjaGVjayBhdXRoY3R4dC0+dmFsaWQgcmF0aGVyIHRoZW4gcHcgIT0gTlVMTDsgb2sgbWFya3VzQAogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzA4IDE2OjAyOjQwCiAgICAgW2F1dGgxLmNdCiAgICAgcmVtb3ZlIHVudXNlZCB2YXJpYWJsZSAocHcpLiBvayBkam1ACiAgICAgKGlkIHN5bmMgb25seSAtIHN0aWxsIHVzZWQgaW4gcG9ydGFibGUpCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzA4IDE5OjE3OjI5CiAgICAgW3NmdHAtaW50LmNdCiAgICAgdHlwb3MgZnJvbSBKb25hdGhvbiBHcmF5OwogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzEwIDE2OjIzOjQxCiAgICAgW2J1ZmF1eC5jIGJ1ZmF1eC5oIGNpcGhlci5jIGNpcGhlci5oIGhvc3RmaWxlLmMgaG9zdGZpbGUuaCBrZXkuY10KICAgICBba2V5Lmggc2Z0cC1jb21tb24uYyBzZnRwLWNvbW1vbi5oIHNmdHAtc2VydmVyLmMgc3NoY29ubmVjdC5jIHNzaGQuY10KICAgICBbc3NoLWRzcy5jIHNzaC1yc2EuYyB1dWVuY29kZS5jIHV1ZW5jb2RlLmhdCiAgICAgY29uc3RpZnkuIG9rIG1hcmt1c0AgJiBkam1ACiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8xMiAxMDoxMjoxNQogICAgIFtzY3AuY10KICAgICBXaGVuIGNhbGxlZCB3aXRoIC1xLCBwYXNzIC1xIHRvIHNzaDsgc3VwcHJlc3NlcyBTU0gyIGJhbm5lci4gIG9rIG1hcmt1c0AKICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8xMiAxNjozOTo1OAogICAgIFtkbnMuYyBkbnMuaCByZWFkY29uZi5jIHNzaF9jb25maWcuNSBzc2hjb25uZWN0LmNdCiAgICAgdXBkYXRlIFNTSEZQIHZhbGlkYXRpb24uIG9rIG1hcmt1c0AKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTEvMTIgMjA6MTQ6NTEKICAgICBbc3NoX2NvbmZpZy41XQogICAgIG1ha2UgdmVyYiBhZ3JlZSB3aXRoIHN1YmplY3QsIGFuZCBraWxsIHNvbWUgd2hpdGVzcGFjZTsKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTEvMTQgMTM6MTk6MDkKICAgICBbc3NoY29ubmVjdDIuY10KICAgICBjbGVhbnVwIGFuZCBtaW5vciBmaXhlcyBmb3IgdGhlIGNsaWVudCBjb2RlOyBmcm9tIFNpbW9uIFdpbGtpbnNvbgogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMS8xNyAwOTo0NTozOQogICAgIFttc2cuYyBtc2cuaCBzc2hjb25uZWN0Mi5jIHNzaC1rZXlzaWduLmNdCiAgICAgcmV0dXJuIGVycm9yIG9uIG1zZyBzZW5kL3JlY2VpdmUgZmFpbHVyZSAocmF0aGVyIHRoYW4gZmF0YWwpOyBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzExLzE3IDExOjA2OjA3CiAgICAgW2F1dGgyLWdzcy5jIGdzcy1nZW5yLmMgZ3NzLXNlcnYuYyBtb25pdG9yLmMgbW9uaXRvci5oIG1vbml0b3Jfd3JhcC5jXQogICAgIFttb25pdG9yX3dyYXAuaCBzc2hjb25uZWN0Mi5jIHNzaC1nc3MuaF0KICAgICByZXBsYWNlICJnc3NhcGkiIHdpdGggImdzc2FwaS13aXRoLW1pYyI7IGZyb20gU2ltb24gV2lsa2luc29uOyAKICAgICB0ZXN0ICsgb2sgamFrb2IuCiAtIChkam0pIEJ1ZyAjNjMyOiBEb24ndCBjYWxsIHBhbV9lbmQgaW5kaXJlY3RseSBmcm9tIHdpdGhpbiBrYmQtaW50CiAgIGNvbnZlcnNhdGlvbiBmdW5jdGlvbgogLSAoZGptKSBFeHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZyb20gYXV0aGVudGljYXRpb24gc3VicHJvY2VzcyB0byAKICAgcGFyZW50LiBQYXJ0IG9mIEJ1ZyAjNzE3CgoyMDAzMTExNQogLSAoZHR1Y2tlcikgW3JlZ3Jlc3MvYWdlbnQtcHRyYWNlLnNoXSBUZXN0IGZvciBHREIgb3V0cHV0IGZyb20gU29sYXJpcyBhbmQKICAgSFAtVVgsIHNraXAgdGVzdCBvbiBBSVguCgoyMDAzMTExMwogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIEFwcGVuZCBuZXdsaW5lcyB0byBsaW5lcyBvdXRwdXQgYnkgdGhlCiAgIHBhbV9jaGF1dGh0b2tfY29udigpLgogLSAoZHR1Y2tlcikgW1JFQURNRSBzc2gtaG9zdC1jb25maWcgc3NoLXVzZXItY29uZmlnIE1ha2VmaWxlXSAoQWxsCiAgIGNvbnRyaWIvY3lnd2luKS4gIE1ham9yIHVwZGF0ZSBmcm9tIHZpbnNjaGVuIGF0IHJlZGhhdC5jb20uCiAgIC0gTWFrZWZpbGUgcHJvdmlkZXMgYSBgY3lnd2luLXBvc3RpbnN0YWxsJyB0YXJnZXQgdG8gcnVuIHJpZ2h0IGFmdGVyCiAgICAgYG1ha2UgaW5zdGFsbCcuCiAgIC0gQmV0dGVyIHN1cHBvcnQgZm9yIFdpbmRvd3MgMjAwMyBTZXJ2ZXIuCiAgIC0gVHJ5IHRvIGdldCBwZXJtaXNzaW9ucyBhcyBjb3JyZWN0IGFzIHBvc3NpYmxlLgogICAtIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byBhbGxvdyBmdWxsIGF1dG9tYXRlZCBob3N0IGNvbmZpZ3VyYXRpb24uCiAgIC0gQ3JlYXRlIGNvbmZpZ3MgZnJvbSBza2VsZXRvbnMgaW4gL2V0Yy9kZWZhdWx0cy9ldGMuCiAgIC0gVXNlIC9iaW4vYmFzaCwgYWxsb3dzIHJlYWRpbmcgdXNlciBpbnB1dCB3aXRoIHJlYWRsaW5lIHN1cHBvcnQuCiAgIC0gUmVtb3ZlIHJlYWxseSBvbGQgY29uZmlncyBmcm9tIC91c3IvbG9jYWwuCiAtIChkdHVja2VyKSBbYXV0aC1wYW0uY10gQWRkIG5ld2xpbmUgdG8gYWNjdW11bGF0ZWQgUEFNX1RFWFRfSU5GTyBhbmQKICAgUEFNX0VSUk9SX01TRyBtZXNzYWdlcy4KCjIwMDMxMTA2CiAtIChkam0pIENsYXJpZnkgVXNlUEFNIGNvbnNlcXVlbmNlcyBhIGxpdHRsZSBtb3JlCgoyMDAzMTEwMwogLSAoZHR1Y2tlcikgW2NvbnRyaWIvY3lnd2luL3NzaC1ob3N0LWNvbmZpZ10gRW5zdXJlIGVudHJpZXMgaW4gL2V0Yy9zZXJ2aWNlcwogICBhcmUgY3JlYXRlZCBjb3JyZWN0bHkgd2l0aCBDUkxGIGxpbmUgdGVybWluYXRpb25zLiAgUGF0Y2ggZnJvbSB2aW5zY2hlbiBhdAogICByZWRoYXQuY29tLgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMC8xNSAwOTo0ODo0NQogICAgIFttb25pdG9yX3dyYXAuY10KICAgICBjaGVjayBwbW9uaXRvciAhPSBOVUxMCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzIxIDA5OjUwOjA2CiAgICAgW2F1dGgyLWdzcy5jXQogICAgIG1ha2Ugc3VyZSB0aGUgZG9pZCBpcyBsYXJnZXIgdGhhbiAyCiAgIC0gYXZzbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMC8yNiAxNjo1Nzo0MwogICAgIFtzc2hjb25uZWN0Mi5jXQogICAgIHJlbmFtZSAnc3VwcG9ydGVkJyBzdGF0aWMgdmFyIGluIHVzZXJhdXRoX2dzc2FwaSgpIHRvICdnc3Nfc3VwcG9ydGVkJwogICAgIHRvIGF2b2lkIHNoYWRvd2luZyB0aGUgZ2xvYmFsIHZlcnNpb24uICBtYXJrdXNAIG9rCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzI4IDA5OjA4OjA2CiAgICAgW21pc2MuY10KICAgICBlcnJvci0+ZGVidWcgZm9yIGdldHNvY2tvcHQrVENQX05PREVMQVk7IHNldmVyYWwgcmVxdWVzdHMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTEvMDIgMTE6MDE6MDMKICAgICBbYXV0aDItZ3NzLmMgY29tcGF0LmMgY29tcGF0Lmggc3NoY29ubmVjdDIuY10KICAgICByZW1vdmUgc3VwcG9ydCBmb3IgU1NIX0JVR19HU1NBUElfQkVSOyBzaW1vbkBzeHcub3JnLnVrCiAtIChkdHVja2VyKSBbcmVncmVzcy9hZ2VudC1wdHJhY2Uuc2hdIFVzZSBudW1lcmljIHVpZCBhbmQgZ2lkLgoKMjAwMzEwMjEKIC0gKGR0dWNrZXIpIFtJTlNUQUxMXSBTb21lIHN5c3RlbSBjcnlwdCgpIGZ1bmN0aW9ucyBzdXBwb3J0IE1ENSBwYXNzd29yZHMKICAgZGlyZWN0bHkuICBOb3RlZCBieSBEYXJyZW4uTW9mZmF0IGF0IHN1bi5jb20uCiAtIChkdHVja2VyKSBbcmVncmVzcy9hZ2VudC1wdHJhY2Uuc2hdIFNraXAgYWdlbnQtdGVzdCB1bmxlc3MgU1VETyBpcyBzZXQsCiAgIG1ha2UgYWdlbnQgc2V0Z2lkIGR1cmluZyB0ZXN0LgoKMjAwMzEwMTcKIC0gKGR0dWNrZXIpIFtJTlNUQUxMXSBOb3RlIHRoYXQgLS13aXRoLW1kNSBpcyBub3cgcmVxdWlyZWQgb24gcGxhdGZvcm1zIHdpdGgKICAgTUQ1IHBhc3N3b3JkcyBldmVuIGlmIFBBTSBzdXBwb3J0IGlzIGVuYWJsZWQuICBGcm9tIHN0ZWV2IGF0IGRldHJpdHVzLm5ldC4KCjIwMDMxMDE1CiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzA4IDA4OjI3OjM2CiAgICAgW3NjcC4xIHNjcC5jIHNmdHAtc2VydmVyLjggc2Z0cC4xIHNmdHAuYyBzc2guMSBzc2hkLjhdCiAgICAgc2NwIGFuZCBzZnRwOiBhZGQgb3B0aW9ucyBsaXN0IGFuZCBzb3J0IG9wdGlvbnMuIG9wdGlvbnMgbGlzdCByZXF1ZXN0ZWQKICAgICBieSBkZXJhYWR0QAogICAgIHNzaGQ6IHVzZSBzYW1lIGZvcm1hdCBhcyBzc2gKICAgICBzc2g6IHJlbW92ZSB3cm9uZyBvcHRpb24gZnJvbSBsaXN0CiAgICAgc2Z0cC1zZXJ2ZXI6IFN1YnN5c3RlbSBpcyBkb2N1bWVudGVkIGluIHNzaF9jb25maWcoNSksIG5vdCBzc2hkKDgpCiAgICAgb2sgZGVyYWFkdEAgbWFya3VzQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMC8wOCAxNToyMToyNAogICAgIFtyZWFkY29uZi5jIHNzaF9jb25maWcuNV0KICAgICBkZWZhdWx0IEdTUyBBUEkgdG8gbm8gaW4gY2xpZW50LCB0b287IG9rIGpha29iLCBkZXJhYWR0QAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMC8xMSAwODoyNDowOAogICAgIFtyZWFkY29uZi5jIHJlYWRjb25mLmggc3NoLjEgc3NoLmMgc3NoX2NvbmZpZy41XQogICAgIHJlbW90ZSB4MTEgY2xpZW50cyBhcmUgbm93IHVudHJ1c3RlZCBieSBkZWZhdWx0LCB1c2VzIHhhdXRoKDgpIHRvIGdlbmVyYXRlCiAgICAgdW50cnVzdGVkIGNvb2tpZXM7IEZvcndhcmRYMTFUcnVzdGVkPXllcyByZXN0b3JlcyBvbGQgYmVoYXZpb3VyLgogICAgIG9rIGRlcmFhZHQ7IGZlZWRiYWNrIGFuZCBvayBkam0vZnJpZXMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTAvMTEgMDg6MjY6NDMKICAgICBbc3NoY29ubmVjdDIuY10KICAgICBzZWFyY2gga2V5cyBpbiByZXZlcnNlIG9yZGVyOyBmaXhlcyAjNjg0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzExIDExOjM2OjIzCiAgICAgW21vbml0b3Jfd3JhcC5jXQogICAgIHJldHVybiBOVUxMIGZvciBtaXNzaW5nIGJhbm5lcjsgb2sgZGptQAogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwMy8xMC8xMiAxMzoxMjoxMwogICAgIFtzc2hfY29uZmlnLjVdCiAgICAgbm90ZSB0aGF0IEVuYWJsZVNTSEtleVNpZ24gc2hvdWxkIGJlIGluIHRoZSBub24taG9zdHNwZWNpZmljIHNlY3Rpb247CiAgICAgcmVtb3ZlIHVubmVjZXNzYXJ5IC5QcDsKICAgICBvayBtYXJrdXNACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzEzIDA4OjIyOjI1CiAgICAgW3NjcC4xIHNmdHAuMV0KICAgICBkb24ndCByZWZlciB0byBvcHRpb25zIHJlbGF0ZWQgdG8gZm9yd2FyZGluZzsgb2sgam1jQAogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzE0IDE5OjQyOjEwCiAgICAgW2Rucy5jIGRucy5oIHJlYWRjb25mLmMgc3NoLWtleWdlbi5jIHNzaGNvbm5lY3QuY10KICAgICBpbmNsdWRlIFNTSEZQIGxvb2t1cCBjb2RlIChub3QgZW5hYmxlZCBieSBkZWZhdWx0KS4gb2sgbWFya3VzQAogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzE0IDE5OjQzOjIzCiAgICAgW1JFQURNRS5kbnNdCiAgICAgdXBkYXRlCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzE0IDE5OjU0OjM5CiAgICAgW3Nlc3Npb24uYyBzc2gtYWdlbnQuY10KICAgICAxMFggZm9yIG1rZHRlbXA7IGRqbUAKIC0gKGR0dWNrZXIpIFthY2NvbmZpZy5oIGNvbmZpZ3VyZS5hYyBkbnMuYyBvcGVuYnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5jCiAgIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmhdIEROUyBmaW5nZXJwcmludCBzdXBwb3J0IGlzIG5vdyBhbHdheXMKICAgY29tcGlsZWQgaW4gYnV0IGRpc2FibGVkIGluIGNvbmZpZy4KIC0gKGR0dWNrZXIpIFthdXRoLmNdIENoZWNrIGZvciBkaXNhYmxlZCBwYXNzd29yZCBleHBpcnkgb24gSFAtVVggVHJ1c3RlZCBNb2RlLgogLSAodGltKSBbcmVncmVzcy9iYW5uZXIuc2hdIHBvcnRhYmlsaXR5IGZpeC4KCjIwMDMxMDA5CiAtIChkdHVja2VyKSBbc3NoZF9jb25maWcuNV0gVXNlUEFNIGRlZmF1bHRzIHRvICJubyIuICBvayBkam1ACgoyMDAzMTAwOAogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIGR0dWNrZXJAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTAvMDcgMDE6NDc6MjcKICAgICBbc3NoY29ubmVjdDIuY10KICAgICBEb24ndCB1c2UgbG9naXQgZm9yIGJhbm5lciwgc2luY2UgaXQgdHJ1bmNhdGVzIHRvIE1TR0JVRlNJWjsgYnogIzY2OCAmCiAgICAgIzcwNy4gIG9rIG1hcmt1c0AKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMTAvMDcgMDc6MDQ6MTYKICAgICBbc2Z0cC1pbnQuY10KICAgICBzZnRwIHF1b3RpbmcgZml4IGZyb20gYWRtb3J0ZW4gQVQgdW1pY2guZWR1OyBvayBtYXJrdXNACiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMC8wNyAyMTo1ODoyOAogICAgIFtzc2hjb25uZWN0Mi5jXQogICAgIHNldCBwdHIgdG8gTlVMTCBhZnRlciBmcmVlCiAgIC0gZHR1Y2tlckBjdnMub3BlbmJzZC5vcmcgMjAwMy8xMC8wNyAwMTo1MjoxMwogICAgIFtyZWdyZXNzL01ha2VmaWxlIHJlZ3Jlc3MvYmFubmVyLnNoXQogICAgIFRlc3QgU1NIMiBiYW5uZXIuICBvayBtYXJrdXNACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzA3IDA3OjA0OjUyCiAgICAgW3JlZ3Jlc3Mvc2Z0cC1jbWRzLnNoXQogICAgIG1vcmUgc2Z0cCBxdW90aW5nIHJlZ3Jlc3MgdGVzdHM7IG9rIG1hcmt1cwoKMjAwMzEwMDcKIC0gKGRqbSkgRGVsZXRlIGF1dG9tNHRlLmNhY2hlIGFmdGVyIGF1dG9yZWNvbmYKIC0gKGR0dWNrZXIpIFthdXRoLXBhbS5jIGF1dGgtcGFtLmggc2Vzc2lvbi5jXSBNYWtlIFBBTSB1c2UgdGhlIG5ldyBzdGF0aWMKICAgY2xlYW51cCBmdW5jdGlvbnMuICBXaXRoICYgb2sgZGptQAogLSAoZHR1Y2tlcikgW2NvbnRyaWIvcmVkaGF0L29wZW5zc2guc3BlY10gQnVnICM3MTQ6IE5vdyB0aGF0IFVzZVBBTSBpcyBhCiAgIHJ1bi10aW1lIHN3aXRjaCwgYWx3YXlzIGJ1aWxkIC0td2l0aC1tZDUtcGFzc3dvcmRzLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hYyBvcGVuYnNkLWNvbXBhdC9NYWtlZmlsZS5pbiBvcGVuYnNkLWNvbXBhdC9zdHJ0b3VsLmNdCiAgIEJ1ZyAjNjcwOiBhZGQgc3RydG91bCgpIHRvIG9wZW5ic2QtY29tcGF0IGZvciBwbGF0Zm9ybXMgbGFja2luZyBpdC4gIG9rIGRqbUAKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNzE1OiBTZXQgQlJPS0VOX1NFVFJFVUlEIGFuZCBCUk9LRU5fU0VUUkVHSUQKICAgb24gUmVsaWFudCBVbml4LiAgUGF0Y2ggZnJvbSBSb2JlcnQuRGFobGVtIGF0IHNpZW1lbnMuY29tLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICM3MTA6IENoZWNrIGZvciBkbHN5bSgpIGluIGxpYmRsIG9uCiAgIFJlbGlhbnQgVW5peC4gIEJhc2VkIG9uIHBhdGNoIGZyb20gUm9iZXJ0LkRhaGxlbSBhdCBzaWVtZW5zLmNvbS4KCjIwMDMxMDAzCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzAyIDEwOjQxOjU5CiAgICAgW3NzaGQuY10KICAgICBwcmludCBvcGVuc3NsIHZlcnNpb24sIHRvbywgc2V2ZXJhbCByZXF1ZXN0czsgb2sgaGVubmluZy9kam0uCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzEwLzAyIDA4OjI2OjUzCiAgICAgW3NzaC1nc3MuaF0KICAgICBtaXNzaW5nICRPcGVuQlNEOjsgZHR1Y2tlcgogLSAodGltKSBbY29udHJpYi9jYWxkZXJhL29wZW5zc2guc3BlY10gUmVtb3ZlIG9ic29sZXRlIC0td2l0aC1pcHY0LWRlZmF1bHQKICAgb3B0aW9uLgoKMjAwMzEwMDIKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMjMgMjA6MTc6MTEKICAgICBbTWFrZWZpbGUuaW4gYXV0aDEuYyBhdXRoMi5jIGF1dGguYyBhdXRoLmggYXV0aC1rcmI1LmMgY2Fub2hvc3QuYwogICAgIGNsZWFudXAuYyBjbGllbnRsb29wLmMgZmF0YWwuYyBnc3Mtc2Vydi5jIGxvZy5jIGxvZy5oIG1vbml0b3IuYyBtb25pdG9yLmgKICAgICBtb25pdG9yX3dyYXAuYyBtb25pdG9yX3dyYXAuaCBwYWNrZXQuYyBzZXJ2ZXJsb29wLmMgc2Vzc2lvbi5jIHNlc3Npb24uaAogICAgIHNzaC1hZ2VudC5jIHNzaGQuY10KICAgICByZXBsYWNlIGZhdGFsX2NsZWFudXAoKSBhbmQgbGlua2VkIGxpc3Qgb2YgZmF0YWwgY2FsbGJhY2tzIHdpdGggc3RhdGljCiAgICAgY2xlYW51cF9leGl0KCkgZnVuY3Rpb24uICByZS1yZWZpbmUgY2xlYW51cF9leGl0KCkgd2hlcmUgYXBwcm9wcmlhdGUsCiAgICAgYWxsb2NhdGUgc3NoZCdzIGF1dGhjdHh0IGVhcnkgdG8gYWxsb3cgc2ltcGxlciBjbGVhbnVwIGluIHNzaGQuCiAgICAgdGVzdGVkIGJ5IG1hbnksIG9rIGRlcmFhZHRACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzIzIDIwOjE4OjUyCiAgICAgW3Byb2dyZXNzbWV0ZXIuY10KICAgICBkb24ndCBwcmludCB0cmFpbGluZyBcMDsgYnVnICM3MDk7IFJvYmVydC5EYWhsZW1Ac2llbWVucy5jb20KICAgICBvayBtaWxsZXJ0L2RlcmFhZHRACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzIzIDIwOjQxOjExCiAgICAgW2NoYW5uZWxzLmMgY2hhbm5lbHMuaCBjbGllbnRsb29wLmNdCiAgICAgbW92ZSBjbGllbnQgb25seSBhZ2VudCBjb2RlIHRvIGNsaWVudGxvb3AuYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8yNiAwODoxOToyOQogICAgIFtzc2hkLmNdCiAgICAgbm8gbmVlZCB0byBzZXQgdGhlIGxpc3RlbiBzb2NrZXRzIHRvIG5vbi1ibG9jazsgb2sgZGVyYWFkdEAKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMjkgMTE6NDA6NTEKICAgICBbc3NoLjFdCiAgICAgLSBhZGQgbGlzdCBvZiBvcHRpb25zIHRvIC1vIGFuZCAuWHIgc3NoX2NvbmZpZyg1KQogICAgIC0gc29tZSBvdGhlciBjbGVhbnVwCiAgICAgcmVxdWVzdGVkIGJ5IGRlcmFhZHRAOwogICAgIG9rIGRlcmFhZHRAIG1hcmt1c0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMjkgMjA6MTk6NTcKICAgICBbc2VydmNvbmYuYyBzc2hkX2NvbmZpZ10KICAgICBHU1NBUElDbGVhbnVwQ3JlZHMgLT4gR1NTQVBJQ2xlYW51cENyZWRlbnRpYWxzCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBEb24ndCBzZXQgRElTQUJMRV9TSEFET1cgd2hlbiBjb25maWd1cmluZwogICAtLXdpdGgtcGFtLiAgb2sgZGptQAogLSAoZHR1Y2tlcikgW3NzaC1nc3MuaF0gUHJvdG90eXBlIGNoYW5nZSBtaXNzZWQgaW4gc3luYy4KIC0gKGR0dWNrZXIpIFtzZXNzaW9uLmNdIEZpeCBidXMgZXJyb3JzIG9uIHNvbWUgNjQtYml0IFNvbGFyaXMgY29uZmlndXJhdGlvbnMuCiAgIEJhc2VkIG9uIHBhdGNoZXMgYnkgTWF0dGhpYXMgS29lcHBlIGFuZCBUaG9tYXMgQmFkZW4uICBvayBkam1ACgoyMDAzMDkzMAogLSAoYmFsKSBGaXggaXNzdWVzIGluIG9wZW5ic2QtY29tcGF0L3JlYWxwYXRoLmMKCjIwMDMwOTI1CiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjIG9wZW5ic2QtY29tcGF0L3hjcnlwdC5jXSBCdWcgIzYzMzogUmVtb3ZlCiAgIERJU0FCTEVfU0hBRE9XIGZvciBIUC1VWCwgdXNlIGdldHNwbmFtIGluc3RlYWQgb2YgZ2V0cHJwd25hbS4gIFBhdGNoIGZyb20KICAgbWljaGFlbF9zdGVmZmVucyBhdCBocC5jb20sIG9rIGRqbUAKIC0gKHRpbSkgW3NzaGRfY29uZmlnXSBVc2VQQU0gZGVmYXVsdHMgdG8gbm8uCgoyMDAzMDkyNAogLSAoZGptKSBVcGRhdGUgdmVyc2lvbi5oIGFuZCBzcGVjIGZpbGVzIGZvciBIRUFECiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBJUklYNSBuZWVkcyB0aGUgc2FtZSBzZXRyZVt1Z11pZCBkZWZpbmVzIGFzIElSSVg2LgoKMjAwMzA5MjMKIC0gKGR0dWNrZXIpIFtNYWtlZmlsZS5pbl0gQnVnICM2NDQ6IEZpeCAibWFrZSBjbGVhbiIgZm9yIG91dC1vZi10cmVlCiAgIGJ1aWxkcy4gIFBvcnRhYmlsaXR5IGNvcnJlY3Rpb25zIGZyb20gdGltQC4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNjY1OiB1aWQgc3dhcHBpbmcgaXNzdWVzIG9uIE1hYyBPUyBYLgogICBQYXRjaCBmcm9tIG1heCBhdCBxdWVuZGkuZGUuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzY1NzogdWlkIHN3YXBwaW5nIGlzc3VlcyBvbiBCU0RpLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICM2NTM6IHVpZCBzd2FwcGluZyBpc3N1ZXMgb24gVHJ1NjQuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBCdWcgIzY5MzogdWlkIHN3YXBwaW5nIGlzc3VlcyBvbiBOQ1IgTVAtUkFTLgogICBQYXRjaCBmcm9tIGRhdmlkLmhhdWdodG9uIGF0IG5jci5jb20KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNjU5OiB1aWQgc3dhcHBpbmcgaXNzdWVzIG9uIElSSVggNi4KICAgUGFydCBvZiBwYXRjaCBzdXBwbGllZCBieSBidWd6aWxsYS1vcGVuc3NoIGF0IHRoZXdyaXR0ZW53b3JkLmNvbQogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hYyBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuYwogICBvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuaF0gQnVnICM2NTk6IFRlc3QgZm9yIGFuZCBoYW5kbGUgc3lzdGVtcyB3aXRoCiAgIHdoZXJlIGdhaV9zdHJlcnJvciBpcyBkZWZpbmVkIGFzICJjb25zdCBjaGFyICoiLiAgUGFydCBvZiBwYXRjaCBzdXBwbGllZAogICBieSBidWd6aWxsYS1vcGVuc3NoIGF0IHRoZXdyaXR0ZW53b3JkLmNvbQogLSAoZHR1Y2tlcikgW2NvbnRyaWIvY3lnd2luL1JFQURNRSBjb250cmliL2N5Z3dpbi9zc2gtaG9zdC1jb25maWddIFVwZGF0ZQogICBzc2gtaG9zdC1jb25maWcgdG8gbWF0Y2ggY3VycmVudCBkZWZhdWx0cywgYnVtcCBSRUFETUUgdmVyc2lvbi4gIFBhdGNoIGZyb20KICAgdmluc2NoZW4gYXQgcmVkaGF0LmNvbS4KIC0gKGR0dWNrZXIpIFt1aWRzd2FwLmNdIERvbid0IHRlc3QgcmVzdG9yYXRpb24gb2YgdWlkIG9uIEN5Z3dpbiBzaW5jZSB0aGUKICAgT1MgZG9lcyBub3Qgc3VwcG9ydCBwZXJtYW5lbnRseSBkcm9wcGluZyBwcml2aWxlZ2VzLiAgUGF0Y2ggZnJvbQogICB2aW5zY2hlbiBhdCByZWRoYXQuY29tLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3BvcnQtYWl4LmNdIFVzZSBjb3JyZWN0IGluY2x1ZGUgZm9yIHhtYWxsb2MuaCwKICAgYWRkIGNhbm9ob3N0LmggdG8gc3RvcCB3YXJuaW5nLiAgQmFzZWQgb24gcGF0Y2ggZnJvbSBvcGVuc3NoLXVuaXgtZGV2IGF0CiAgIHRoZXdyaXR0ZW53b3JkLmNvbQogLSAoZHR1Y2tlcikgW0lOU1RBTExdIEJ1ZyAjNjg2OiBEb2N1bWVudCByZXF1aXJlbWVudCBmb3IgemxpYiAxLjEuNCBvcgogICBoaWdoZXIuCiAtICh0aW0pIEZpeCB0eXBvLiBzL1NFVEVJVURfQlJFQUtTX1NFVFVJRC9TRVRFVUlEX0JSRUFLU19TRVRVSUQvCiAtICh0aW0pIFtjb25maWd1cmUuYWNdIEJ1ZyA2NjU6IG1vdmUgMyBuZXcgQUNfREVGSU5FUyBvdXRzaWRlIG9mIEFDX1RSWV9SVU4uCiAgIFJlcG9ydCBieSBkaXN0bGVyIEFUIGdvbGVtIHBoIHV0ZXhhcyBlZHUuCiAtIChkdHVja2VyKSBbY29udHJpYi9haXgvcGFtLmNvbmZdIEluY2x1ZGUgZXhhbXBsZSBwYW0uY29uZiBmb3IgQUlYIGZyb20KICAgYXJ0aWNsZSBieSBnZW50eSBhdCBhdXN0aW4uaWJtLmNvbSwgaW5jbHVkZWQgd2l0aCB0aGUgYXV0aG9yJ3MgcGVybWlzc2lvbi4KIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMTggMDc6NTI6NTQKICAgICBbc3NoY29ubmVjdC5jXQogICAgIG1pc3Npbmcge307IGJ1ZyAjNjU2OyBqY2xvbmd1ZXQgYXQgZnJlZS5mcgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8xOCAwNzo1NDo0OAogICAgIFtidWZmZXIuY10KICAgICBwcm90ZWN0IGFnYWluc3QgZG91YmxlIGZyZWU7ICM2NjA7ICB6YXJkb3ogYXQgdXNlcnMuc2YubmV0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzE4IDA3OjU2OjA1CiAgICAgW2F1dGhmaWxlLmNdCiAgICAgbWlzc2luZyAgYnVmZmVyX2ZyZWUoJmVuY3J5cHRlZCk7ICM2NjI7IHphcmRveiBhdCB1c2Vycy5zZi5uZXQKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMTggMDg6NDk6NDUKICAgICBbZGVhdHRhY2suYyBtaXNjLmMgc2Vzc2lvbi5jIHNzaC1hZ2VudC5jXQogICAgIG1vcmUgYnVmZmVyIGFsbG9jYXRpb24gZml4ZXM7IGZyb20gU29sYXIgRGVzaWduZXI7IENBTi0yMDAzLTA2ODI7CiAgICAgb2sgbWlsbGVydEAKICAgLSBtaW9kQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzE4IDEzOjAyOjIxCiAgICAgW2F1dGhmZC5jIGJ1ZmF1eC5jIGRoLmMgbWFjLmMgc3NoLWtleWdlbi5jXQogICAgIEEgZmV3IHNpZ25lZG5lc3MgZml4ZXMgZm9yIGhhcm1sZXNzIHNpdHVhdGlvbnM7IG1hcmt1c0Agb2sKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMTkgMDk6MDI6MDIKICAgICBbcGFja2V0LmNdCiAgICAgYnVmZmVyX2R1bXAgb25seSBpZiBQQUNLRVRfREVCVUcgaXMgZGVmaW5lZDsgSmVkaS9TZWN0b3IgT25lOyBwciAzNDcxCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzE5IDA5OjAzOjAwCiAgICAgW2J1ZmZlci5jXQogICAgIHNpZ24gZml4IGluIGJ1ZmZlcl9kdW1wOyBKZWRpL1NlY3RvciBPbmU7IHByIDM0NzMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMTkgMTE6Mjk6NDAKICAgICBbc3NoLWFnZW50LmNdCiAgICAgcHJvdmlkZSBhIHNzaC1hZ2VudCBzcGVjaWZpYyBmYXRhbCgpIGZ1bmN0aW9uOyBvayBkZXJhYWR0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzE5IDExOjMwOjM5CiAgICAgW3NzaC1rZXlzY2FuLmNdCiAgICAgYXZvaWQgZmF0YWxfY2xlYW51cCwganVzdCBjYWxsIGV4aXQoKTsgb2sgZGVyYWFkdAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8xOSAxMTozMTozMwogICAgIFtjaGFubmVscy5jXQogICAgIGRvIG5vdCBjYWxsIGNoYW5uZWxfZnJlZV9hbGwgb24gZmF0YWw7IG9rIGRlcmFhZHQKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMTkgMTE6MzM6MDkKICAgICBbcGFja2V0LmMgc3NoZC5jXQogICAgIGRvIG5vdCBjYWxsIHBhY2tldF9jbG9zZSBvbiBmYXRhbDsgb2sgZGVyYWFkdAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8xOSAxNzo0MDoyMAogICAgIFtzY3AuY10KICAgICBlcnJvciBoYW5kbGluZyBmb3IgcmVtb3RlLXJlbW90ZSBjb3B5OyAjNjM4OyByZXBvcnQgSGFyYWxkIEtvZW5pZzsKICAgICBvayBtaWxsZXJ0LCBmZ3MsIGhlbm5pbmcsIGRlcmFhZHQKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMTkgMTc6NDM6MzUKICAgICBbY2xpZW50bG9vcC5jIHNzaHR0eS5jIHNzaHR0eS5oXQogICAgIHJlbW92ZSBmYXRhbCBjYWxsYmFja3MgZnJvbSBjbGllbnQgY29kZTsgb2sgZGVyYWFkdAogLSAoYmFsKSAiZXh0cmF0aW9uIiAtPiAiZXh0cmFjdGlvbiIgaW4gc3NoLXJhbmQtaGVscGVyLmM7IHJlcG90ZWQgYnkgam9obgoJb24gI3VuaXhoZWxwQGVmbmV0CiAtICh0aW0pIFtjb25maWd1cmUuYWNdIGFkZCAtLWRpc2FibGUtZXRjLWRlZmF1bHQtbG9naW4gb3B0aW9uLiBvayBkam0KIC0gKGRqbSkgU3luYyB3aXRoIFZfM183IGJyYW5jaDoKICAgLSAoZGptKSBGaXggU1NIMSBjaGFsbGVuZ2Uga2x1ZGdlCiAgIC0gKGRqbSkgQnVnICM2NzE6IEZpeCBidWlsZHMgb24gT3BlbkJTRAogICAtIChkam0pIEJ1ZyAjNjc2OiBGaXggUEFNIHN0YWNrIGNvcnJ1cHRpb24KICAgLSAoZGptKSBGaXggYmFkIGZyZWUoKSBpbiBQQU0gY29kZQogICAtIChkam0pIERvbid0IGNhbGwgcGFtX2VuZCBiZWZvcmUgcGFtX2luaXQKICAgLSAoZGptKSBFbmFibGUgYnVpbGQgd2l0aCBvbGQgT3BlblNTTCBhZ2FpbgogICAtIChkam0pIFRyaW0gZGVwcmVjYXRlZCBvcHRpb25zIGZyb20gSU5TVEFMTC4gTWVudGlvbiBVc2VQQU0KICAgLSAoZGptKSBGaXggcXVvdGUgaGFuZGxpbmcgaW4gc2Z0cDsgUGF0Y2ggZnJvbSBhZG1vcnRlbiBBVCB1bWljaC5lZHUKCjIwMDMwOTE5CiAtIChkam0pIEJ1ZyAjNjgzOiBSZW1vdmUgcmVmZXJlbmNlIHRvIC0td2l0aC1pcHY0LWRlZmF1bHQgZnJvbSBJTlNUQUxMOwogICBkamFzdCBBVCBjcy50b3JvbnRvLmVkdQogLSAoZGptKSBCdWcgIzY2MTogUmVtb3ZlIGR1cGxpY2F0ZSBjaGVjayBmb3IgYmFzZW5hbWU7IGZyb20gCiAgIGJ1Z3ppbGxhLW9wZW5zc2ggQVQgdGhld3JpdHRlbndvcmQuY29tCiAtIChkam0pIEJ1ZyAjNjQxOiBBbGxvdyBSZWRIYXQgUlBNIGJ1aWxkaW5nIHdpdGhvdXQgR1RLLTI7IFBhdGNoIGZyb20KICAgamFzb24gQVQgZGV2cmFuZG9tLm9yZwogLSAoZGptKSBCdWcgIzY0NjogRml4IGxvY2F0aW9uIG9mIHgxMS1zc2gtYXNrcGFzczsgSmltCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvcG9ydC1haXguaF0gQnVnICM2NDA6IERvbid0IGluY2x1ZGUgYXVkaXQuaAogICB1bmxlc3MgcmVxdWlyZWQuICBSZW9yZGVyIHRvIHJlZHVjZSB3YXJuaW5ncy4KIC0gKGR0dWNrZXIpIFtzZXNzaW9uLmNdIEJ1ZyAjNjQzOiBGaXggc2l6ZV90IC0+IHVfaW50IGFuZCBmaXggbnVsbCBkZXJlZgogICB3aGVuIC9ldGMvZGVmYXVsdC9sb2dpbiBkb2Vzbid0IGV4aXN0IG9yIGlzbid0IHJlYWRhYmxlLiAgRml4ZXMgZnJvbQogICBqcGFyc29ucy1saXN0cyBhdCBzYWZmcm9uLm5ldCBhbmQgZ2Vvcmcub3BwZW5iZXJnIGF0IGRldSBtY2kgY29tLgogLSAoZHR1Y2tlcikgW2FjY29uZmlnLmhdIFVwZGF0ZWQgYmFzZW5hbWUgdGVzdCBuZWVkcyBIQVZFX0JBU0VOQU1FCgoyMDAzMDkxOAogLSAoZGptKSBCdWcgIzY1MjogRml4IGVtcHR5IHBhc3N3b3JkIGF1dGgKCjIwMDMwOTE3CiAtIChkam0pIFN5bmMgd2l0aCBWXzNfNyBicmFuY2gKIC0gKGRqbSkgT3BlbkJTRCBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzE2IDIxOjAyOjQwCiAgICAgW2J1ZmZlci5jIGNoYW5uZWxzLmMgdmVyc2lvbi5oXQogICAgIG1vcmUgbWFsbG9jL2ZhdGFsIGZpeGVzOyBvayBtaWxsZXJ0L2RlcmFhZHQ7IGdodWRzb24gYXQgTUlULkVEVQogLSAoZGptKSBDcmFuayBSUE0gc3BlYyBmaWxlIHZlcnNpb25zCiAtICh0aW0pIFtvcGVuYnNkLWNvbXBhdC9pbmV0X250b2EuY10gMjAwMzA5MTcgIlN5bmMgd2l0aCBWXzNfNyBicmFuY2giIHVuZGlkCiAgIDIwMDMwOTE2ICJNaXNzZWQgZGVhZCBoZWFkZXIgaW4gaW5ldF9udG9hLmMiCiAKMjAwMzA5MTYKIC0gKGR0dWNrZXIpIFthY2NvbmZpZy5oIGNvbmZpZ3VyZS5hYyBkZWZpbmVzLmggc2Vzc2lvbi5jXSBCdWcgIzI1MjogUmV0cmlldmUKICAgUEFUSCAob3IgU1VQQVRIKSBhbmQgVU1BU0sgZnJvbSAvZXRjL2RlZmF1bHQvbG9naW4gb24gcGxhdGZvcm1zIHRoYXQgaGF2ZSBpdAogICAoZWcgU29sYXJpcywgUmVsaWFudCBVbml4KS4gIFBhdGNoIGZyb20gUm9iZXJ0LkRhaGxlbSBhdCBzaWVtZW5zLmNvbS4gIAogICBvayBkam1ACiAtIChiYWwpIE9wZW5CU0QgU3luYwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMTYgMDM6MDM6NDcKICAgICBbYnVmZmVyLmNdCiAgICAgZG8gbm90IGV4cGFuZCBidWZmZXIgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcmVhbGxvY2F0ZSBpdDsgbWFya3VzIG9rCiAtICh0aW0pIFtjb25maWd1cmUuYWNdIEZpeCBwb3J0YWJpbGl0eSBpc3N1ZXMuCiAtIChiYWwpIE1pc3NlZCBkZWFkIGhlYWRlciBpbiBpbmV0X250b2EuYwoKMjAwMzA5MTQKIC0gKGR0dWNrZXIpIFtNYWtlZmlsZSByZWdyZXNzL01ha2VmaWxlXSBGaXggcG9ydGFiaWxpdHkgaXNzdWVzIHByZXZlbnRpbmcKICAgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgZnJvbSBydW5uaW5nIHdpdGggU29sYXJpcycgbWFrZS4gIFBhdGNoIGZyb20gQnJpYW4KICAgUG9vbGUgKHJhaiBhdCBjZXJpYXMucHVyZHVlLmVkdSkuCiAtIChkdHVja2VyKSBbcmVncmVzcy9NYWtlZmlsZV0gQUlYJ3MgbWFrZSBkb2Vzbid0IGxpa2UgIiArPSIsIHNvIHJlcGxhY2UKICAgd2l0aCB2YW5pbGxhICI9Ii4KCjIwMDMwOTEzCiAtIChkdHVja2VyKSBbcmVncmVzcy9hZ2VudC10aW1lb3V0LnNoXSBUaW1lb3V0IG9mIDUgc2VjIGlzIGJvcmRlcmxpbmUgZm9yCiAgIHNsb3dlciBob3N0cywgaW5jcmVhc2UgdG8gMTAgc2VjLgogLSAoZHR1Y2tlcikgW2F1dGgtcGFzc3dkLmNdIE9uIEFJWCwgY2FsbCBzZXRhdXRoZGIoKSBiZWZvcmUgbG9naW5zdWNjZXNzKCksCiAgIHJlcXVpcmVkIHRvIGNvcnJlY3RseSByZXNldCBmYWlsZWQgbG9naW4gY291bnQgd2hlbiB1c2luZyBhIHBhc3N3b3JkCiAgIHJlZ2lzdHJ5IG90aGVyIHRoYW4gImZpbGVzIiAoZWcgTERBUCwgc2VlIGJ1ZyAjNTQzKS4KIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gZGVmaW5lIFdJVEhfQUJCUkVWX05PX1RUWSBmb3IgU0NPLgogICBSZXBvcnQgYnkgUm9nZXIgQ29ybmVsaXVzLgogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIFVzZSBTU0hEX1BBTV9TRVJWSUNFIGZvciBQQU0gc2VydmljZSBuYW1lLCBwYXRjaAogICBmcm9tIGNqd2F0c29uIGF0IGRlYmlhbi5vcmcuCgoyMDAzMDkxMgogLSAodGltKSBbcmVncmVzcy9hZ2VudC1wdHJhY2Uuc2hdIHNoIGRvZXNuJ3QgbGlrZSAiaWYgISBzaGVsbF9mdW5jdGlvbjsgdGhlbiIuCiAtICh0aW0pIFtNYWtlZmlsZS5pbl0gb25seSBta2RpciByZWdyZXNzIGlmIGl0IGRvZXMgbm90IGV4aXN0LgogLSAodGltKSBbcmVncmVzcy95ZXMtaGVhZC5zaF0gc2hlbGwgcG9ydGFiaWxpdHkgZml4LgoKMjAwMzA5MTEKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNTg4LCAjNjE1OiBNb3ZlIG90aGVyIGxpYmdlbiB0ZXN0cyB0byBhZnRlcgogICB0aGUgZGlybmFtZSB0ZXN0LCB0byBhbGxvdyBhIGJyb2tlbiBkaXJuYW1lIHRvIGJlIGRldGVjdGVkIGNvcnJlY3RseS4KICAgQmFzZWQgcGFydGlhbGx5IG9uIHBhdGNoIHN1cHBsaWVkIGJ5IGFsZXgua2llcm5hbiBhdCB0aHVzLm5ldC4gIG9rIGRqbUAKIC0gKHRpbSkgW2NvbmZpZ3VyZS5hY10gTW92ZSBsaWJnZW4gdGVzdHMgdG8gYmVmb3JlIGxpYndyYXAgdG8gdW5icmVhawogICBVbml4V2FyZSAyLjAzIHVzaW5nIC0td2l0aC10Y3Atd3JhcHBlcnMuCiAtICh0aW0pIFtjb25maWd1cmUuYWNdIFByZWZlciBzZXR1aWQvc2V0Z2lkIG9uIFVuaXhXYXJlIGFuZCBPcGVuIFNlcnZlci4KIC0gKHRpbSkgW3JlZ3Jlc3MvYWdlbnQtcHRyYWNlLnNoIHJlZ3Jlc3MvZHluYW1pYy1mb3J3YXJkLnNoCiAgIHJlZ3Jlc3Mvc2Z0cC1jbWRzLnNoIHJlZ3Jlc3Mvc3RkZXJyLWFmdGVyLWVvZi5zaCByZWdyZXNzL3Rlc3QtZXhlYy5zaF0KICAgbm8gbG9uZ2VyIGRlcGVuZHMgb24gd2hpY2goMSkuIHBhdGNoIGJ5IGR0dWNrZXJACgoyMDAzMDkxMAogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICM2MzY6IEFkZCBzdXBwb3J0IGZvciBDcmF5J3MgbmV3IFgxIG1hY2hpbmUuCiAgIFBhdGNoIGZyb20gd2VuZHlwIGF0IGNyYXkuY29tLgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gUGFydCBvZiBidWcgIzYxNTogdGNzZW5kYnJlYWsgbWlnaHQgYmUgYSBtYWNyby4KIC0gKGR0dWNrZXIpIFtyZWdyZXNzaC95ZXMtaGVhZC5zaF0gU29tZSBwbGF0Zm9ybXMgKGVnIFNvbGFyaXMpIGRvbid0IGhhdmUKICAgInllcyIuCgoyMDAzMDkwOQogLSAodGltKSBbcmVncmVzcy9NYWtlZmlsZV0gRml4ZXMgZm9yIGJ1aWxkaW5nIG91dHNpZGUgb2YgYSByZWFkLW9ubHkKICAgc291cmNlIHRyZWUuCiAtICh0aW0pIFtyZWdyZXNzL2FnZW50LXRpbWVvdXQuc2hdIHMvVElNRU9VVC9TU0hBR0VOVF9USU1FT1VULyBGaXhlcyBjb25mbGljdAogICB3aXRoIHNoZWxsIHJlYWQtb25seSB2YXJpYWJsZS4KIC0gKHRpbSkgW3JlZ3Jlc3Mvc2Z0cC1iYWRjbWRzLnNoIHJlZ3Jlc3Mvc2Z0cC1jbWRzLnNoXSBGaXggZXJyb3JzIGxpa2UKICAgVVg6cm06IEVSUk9SOiBDYW5ub3QgcmVtb3ZlICcuJyBvciAnLi4nCgoyMDAzMDkwOAogLSAodGltKSBbY29uZmlndXJlLmFjIG9wZW5ic2QtY29tcGF0L2dldHJyc2V0YnluYW1lLmNdIHdyYXAgX2dldHNob3J0IGFuZAogICBfZ2V0bG9uZyBpbiAjaWZuZGVmCiAtICh0aW0pIFtjb25maWd1cmUuYWMgYWNjb25maWcuaCBvcGVuYnNkLWNvbXBhdC9nZXRycnNldGJ5bmFtZS5jXSB0ZXN0IGZvcgogICBIRUFERVIuYWQgaW4gYXJwYS9uYW1lc2VyLmgKIC0gKHRpbSkgW3NzaC1rZXlnZW4uY10gcy9QQVRIX01BWC9NQVhQQVRITEVOLyBvayBtb3VyaW5nQAoKMjAwMzA5MDcKIC0gKGR0dWNrZXIpIFthZ2VudC1wdHJhY2Uuc2ggZHluYW1pYy1mb3J3YXJkLnNoIChhbGwgcmVncmVzcy8pXQogICBQdXQgIndoaWNoIiBpbnNpZGUgcXVvdGVzLgogLSAoZHR1Y2tlcikgW2R5bmFtaWMtZm9yd2FyZC5zaCBmb3J3YXJkaW5nLnNoIHNmdHAtYmF0Y2guc2ggKGFsbCByZWdyZXNzLyldCiAgIEFkZCAke0VYRUVYVH06IHJlcXVpcmVkIHRvIHdvcmsgb24gQ3lnd2luLgogLSAoZHR1Y2tlcikgW3JlZ3Jlc3Mvc2Z0cC1iYXRjaC5zaF0gTWFrZSB0ZW1wb3JhcnkgYmF0Y2ggZmlsZSBuYW1lIG1vcmUKICAgZGlzdGluY3RpdmUsIHNvICJybSAke0JBVENIfS4qIiBkb2Vzbid0IG1hdGNoIHRoZSBzY3JpcHQgaXRzZWxmLgogLSAoZHR1Y2tlcikgW3JlZ3Jlc3Mvc2Z0cC1jbWRzLnNoXSBTa2lwIHF1b3RlZCBmaWxlIHRlc3Qgb24gQ3lnd2luLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L3hjcnlwdC5jXSAjZWxzaWYgLT4gI2VsaWYKIC0gKGR0dWNrZXIpIFthY2NvbmZpZy5oXSBUeXBvLgogLSAoZHR1Y2tlcikgW0NSRURJVFMgTWFrZWZpbGUuaW4gY29uZmlndXJlLmFjIG1kb2MybWFuLmF3ayBtZG9jMm1hbi5wbF0KICAgUmVwbGFjZSBtZG9jMm1hbi5wbCB3aXRoIG1kb2MybWFuLmF3aywgcHJvdmlkZWQgYnkgUGV0ZXIgU3R1Z2UuCgoyMDAzMDkwNgogLSAoZHR1Y2tlcikgW2FjY29uZmlnLmggY29uZmlndXJlLmFjIHVpZHN3YXAuY10gUHJlZmVyIHNldHVpZC9zZXRnaWQgb24gQUlYLgoKMjAwMzA5MDUKIC0gKGR0dWNrZXIpIFtNYWtlZmlsZS5pbl0gQWRkIGRpc3RjbGVhbiB0YXJnZXQgZm9yIHJlZ3Jlc3MvLCBmaXggY2xlYW4gdGFyZ2V0LgoKMjAwMzA5MDQKIC0gKGR0dWNrZXIpIFBvcnRhYmxpemUgcmVncmVzc2lvbiB0ZXN0cy4gIFBhcnRzIGNvbnRyaWJ1dGVkIGJ5IFJvdW1lbgogICBQZXRyb3YsIERhdmlkIE0uIFdpbGxpYW1zIGFuZCBDb3Jpbm5hIFZpbnNjaGVuLgogICAtIFtNYWtlZmlsZS5pbl0gQWRkICJtYWtlIHRlc3RzIiB0YXJnZXQgYW5kICJtYWtlIGNsZWFuIiBob29rcy4KICAgLSBbcmVncmVzcy9hZ2VudC1nZXRwZWVyZWlkLnNoXSBTa2lwIHRlc3Qgb24gcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydAogICAgIGdldHBlZXJlaWQuCiAgIC0gW3JlZ3Jlc3MvYWdlbnQtcHRyYWNlLnNoXSBTa2lwIHRlc3RzIGlmIHBsYXRmb3JtIGRvZXNuJ3Qgc3VwcG9ydCBpdCBvcgogICAgIGdkYiBjYW5ub3QgYmUgZm91bmQuCiAgIC0gW3JlZ3Jlc3MvcmVjb25maWd1cmUvc2hdIE1ha2UgcGF0aCB0byBzc2hkIGZ1bGx5IHF1YWxpZmllZCBpZiByZXF1aXJlZC4KICAgLSBbcmVncmVzcy9yZWtleS5zaF0gUmVtb3ZlIGRlcGVuZGVuY2Ugb24gL2Rldi96ZXJvIChub3QgYWxsIHBsYXRmb3JtcyBoYXZlCiAgICAgaXQpLiAgVGhlIHNwYXJzZSBmaWxlIHdpbGwgdGFrZSBsZXNzIGRpc2sgc3BhY2UgdG9vLgogICAtIFtyZWdyZXNzL3NmdHAtY21kcy5zaF0gRW5zdXJlIGZpbGVzIHVzZWQgZm9yIHRlc3QgYXJlIHJlYWRhYmxlLgogICAtIFtyZWdyZXNzL3N0ZGVyci1hZnRlci1lb2Yuc2hdIFNlYXJjaCBmb3IgYSB1c2FibGUgY2hlY2tzdW0gcHJvZ3JhbS4KICAgLSBbcmVncmVzcy9zZnRwLWJhZGNtZHMuc2ggcmVncmVzcy9zZnRwLWNtZHMuc2ggcmVncmVzcy9zZnRwLnNoCiAgICAgcmVncmVzcy9zc2gtY29tLWNsaWVudC5zaCByZWdyZXNzL3NzaC1jb20tc2Z0cC5zaCByZWdyZXNzL3N0ZGVyci1kYXRhLnNoCiAgICAgcmVncmVzcy90cmFuc2Zlci5zaF0gVXNlICR7RVhFRVhUfSB3aGVyZSBhcHByb3ByaWF0ZS4KICAgLSBbcmVncmVzcy9zZnRwLnNoIHJlZ3Jlc3Mvc3NoLWNvbS1zZnRwLnNoXSBSZW1vdmUgZGVwZW5kZW5jeSBvbiAvZGV2L3N0ZGluLgogICAtIFtyZWdyZXNzL2FnZW50LXB0cmFjZS5zaCByZWdyZXNzL2FnZW50LXRpbWVvdXQuc2hdCiAgICAgImdyZXAgLXEiIC0+ICJncmVwID4vZGV2L251bGwiCiAgIC0gW3JlZ3Jlc3MvYWdlbnQuc2ggcmVncmVzcy9wcm90by12ZXJzaW9uLnNoIHJlZ3Jlc3Mvc3NoLWNvbS5zaAogICAgIHJlZ3Jlc3MvdGVzdC1leGVjLnNoXSBIYW5kbGUgZGlmZmVyZW50IHdheXMgb2YgZWNob2luZyB3aXRob3V0IG5ld2xpbmVzLgogICAtIFtyZWdyZXNzL2R5bmFtaWMtZm9yd2FyZC5zaF0gU29tZSAid2hpY2giIHByb2dyYW1zIG91dHB1dCBvbiBzdGRlcnIuCiAgIC0gW3JlZ3Jlc3Mvc2Z0cC1jbWRzLnNoXSBVc2UgcG9ydGFibGUgInRlc3QiIG9wdGlvbi4KICAgLSBbcmVncmVzcy90ZXN0LWV4ZWMuc2hdIFVzZSBzdWRvLCBzZWFyY2ggZm9yICJ3aG9hbWkiIGVxdWl2YWxlbnQsIGFsd2F5cwogICAgIHVzZSBTdHJpY3Rtb2RlcyBubywgd2FpdCBsb25nZXIgZm9yIHNzaGQgc3RhcnR1cC4KICAgLSBbcmVncmVzcy9NYWtlZmlsZV0gUmVtb3ZlIEJTRGlzbXMuCiAgIC0gW3JlZ3Jlc3MvUkVBRE1FLnJlZ3Jlc3NdIEFkZCBhIGJhc2ljIHJlYWRtZS4KICAgLSBbTWFrZWZpbGUuaW4gcmVncmVzcy9hZ2VudC1nZXRwZWVyZWlkLnNoXSBjb25maWcuaCBpcyBub3cgaW4gJEJVSUxERElSCiAgICAgbm90ICRPQkouCiAgIC0gW01ha2VmaWxlLmluIHJlZ3Jlc3MvYWdlbnQtcHRyYWNlXSBGaXggbWlub3IgcmVncmVzcyBpc3N1ZXMgb24gQ3lnd2luLgoKMjAwMzA5MDMKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yNiAwOTo1ODo0MwogICAgIFthdXRoLXBhc3N3ZC5jIGF1dGguYyBhdXRoLmggYXV0aDEuYyBhdXRoMi1ub25lLmMgYXV0aDItcGFzc3dkLmNdCiAgICAgW2F1dGgyLmMgbW9uaXRvci5jXQogICAgIGZpeCBwYXNzd2QgYXV0aCBmb3IgJ3VzZXJuYW1lIGxlYWtzIHZpYSB0aW1pbmcnOyB3aXRoIGRqbUAsIG9yaWdpbmFsIAogICAgIHBhdGNoZXMgZnJvbSBzb2xhcgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yOCAxMjo1NDozNAogICAgIFthdXRoLmhdCiAgICAgcmVtb3ZlIGtlcmJlcm9zIHN1cHBvcnQgZnJvbSBzc2gxLCBzaW5jZSBpdCBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEdTU0FQSTsKICAgICBidXQga2VlcCBrZXJiZXJvcyBwYXNzd2QgYXV0aCBmb3Igc3NoMSBhbmQgMjsgb2sgZGptLCBoaW4sIGhlbm5pbmcsIC4uLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8wMiAxNjo0MDoyOQogICAgIFt2ZXJzaW9uLmhdCiAgICAgZW50ZXIgMy43CiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA5LzAyIDE4OjUwOjA2CiAgICAgW3NmdHAuMSBzc2hfY29uZmlnLjVdCiAgICAgZXNjYXBlIHB1bmN0dWF0aW9uOwogICAgIG9rIGRlcmFhZHRACgoyMDAzMDkwMgogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yNCAxNzozNjo1MQogICAgIFthdXRoMi1nc3MuY10KICAgICA2NCBiaXQgY2xlYW51cHM7IG1hcmt1cyBvawogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yOCAxMjo1NDozNAogICAgIFthdXRoLWtyYjUuYyBhdXRoLmggYXV0aDEuYyBtb25pdG9yLmMgbW9uaXRvci5oIG1vbml0b3Jfd3JhcC5jXQogICAgIFttb25pdG9yX3dyYXAuaCByZWFkY29uZi5jIHNlcnZjb25mLmMgc2Vzc2lvbi5jIHNzaF9jb25maWcuNV0KICAgICBbc3NoY29ubmVjdDEuYyBzc2hkLmMgc3NoZF9jb25maWcgc3NoZF9jb25maWcuNV0KICAgICByZW1vdmUga2VyYmVyb3Mgc3VwcG9ydCBmcm9tIHNzaDEsIHNpbmNlIGl0IGhhcyBiZWVuIHJlcGxhY2VkIHdpdGggR1NTQVBJOwogICAgIGJ1dCBrZWVwIGtlcmJlcm9zIHBhc3N3ZCBhdXRoIGZvciBzc2gxIGFuZCAyOyBvayBkam0sIGhpbiwgaGVubmluZywgLi4uCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzI5IDEwOjAzOjE1CiAgICAgW2NvbXBhdC5jIGNvbXBhdC5oXQogICAgIFNTSF9CVUdfSzVVU0VSIGlzIHVudXNlZDsgb2sgaGVubmluZ0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjkgMTA6MDQ6MzYKICAgICBbY2hhbm5lbHMuYyBuY2hhbi5jXQogICAgIGJlIGxlc3MgY2hhdHR5OyBkZWJ1ZyAtPiBkZWJ1ZzIsIGNsZWFudXA7IG9rIGhlbm5pbmdACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzMxIDEwOjI2OjA0CiAgICAgW3Byb2dyZXNzbWV0ZXIuY10KICAgICBwYXNzIGZpbGVfc2l6ZSArIDEgdG8gc25wcmludGY6IGZpeGVzIHByaW50aW5nIG9mIHRydW5jYXRlZAogICAgIGZpbGUgbmFtZXM7IGZpeCBiYXNlZCBvbiBwYXRjaC9yZXBvcnQgZnJvbSBzdHVybUA7CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzMxIDEyOjE0OjIyCiAgICAgW3Byb2dyZXNzbWV0ZXIuY10KICAgICBkbyB3cml0ZSB0byBidWZbLTFdCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzMxIDEzOjI5OjA1CiAgICAgW3Nlc3Npb24uY10KICAgICBjYWxsIHNzaF9nc3NhcGlfc3RvcmVjcmVkcyBjb25kaXRpb25hbGx5IGZyb20gZG9fZXhlYygpOyAKICAgICB3aXRoIHN4d0BpbmYuZWQuYWMudWsKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMzEgMTM6MzA6MTgKICAgICBbZ3NzLXNlcnYuY10KICAgICBjb3JyZWN0IHN0cmluZyB0ZXJtaW5hdGlvbiBpbiBwYXJzZV9lbmFtZSgpOyBzeHdAaW5mLmVkLmFjLnVrCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzMxIDEzOjMxOjU3CiAgICAgW2dzcy1zZXJ2LmNdCiAgICAgd2hpdHNwYWNlIEtORgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8wMSAwOTo1MDowNAogICAgIFtzc2hkX2NvbmZpZy41XQogICAgIGdzcyBrZXggaXMgbm90IHN1cHBvcnRlZDsgc3h3QGluZi5lZC5hYy51awogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8wMSAxMjo1MDo0NgogICAgIFtyZWFkY29uZi5jXQogICAgIHJtIGdzc2FwaWRlbGVnYXRlY3JlZHMgYWxpYXM7IG5ldmVyIHN1cHBvcnRlZCBiZWZvcmUKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMDEgMTM6NTI6MTgKICAgICBbc3NoLmhdCiAgICAgcm0gd2hpdGVzcGFjZQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOS8wMSAxODoxNTo1MAogICAgIFtyZWFkY29uZi5jIHJlYWRjb25mLmggc2VydmNvbmYuYyBzZXJ2Y29uZi5oIHNzaC5jXQogICAgIHJlbW92ZSB1bnVzZWQga2VyYmVyb3MgY29kZTsgb2sgaGVubmluZ0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDkvMDEgMjA6NDQ6NTQKICAgICBbYXV0aDItZ3NzLmNdCiAgICAgZml4IGxlYWsKIC0gKGRqbSkgRG9uJ3QgaW5pdGlhbGlzZSBwYW1fY29udiBzdHJ1Y3R1cmVzIGlubGluZS4gQXZvaWRzIEhQL1VYIGNvbXBpbGVyCiAgIGVycm9yLiBQYXJ0IG9mIEJ1ZyAjNDIzLCBwYXRjaCBmcm9tICBtaWNoYWVsX3N0ZWZmZW5zIEFUIGhwLmNvbQogLSAoZGptKSBCdWcgIzQyMzogcmVvcmRlciBzZXR0aW5nIG9mIFBBTV9UVFkgYW5kIGNhbGxpbmcgb2YgUEFNIHNlc3Npb24gCiAgIG1hbmFnZW1lbnQgKG5vdyBkb25lIGluIGRvX3NldHVzZXJjb250ZXh0KS4gTGFyZ2VseSBmcm9tIAogICBtaWNoYWVsX3N0ZWZmZW5zIEFUIGhwLmNvbQogLSAoZGptKSBGaXggb3BlbmJzZC1jb21wYXQvIGFnYWluIC0gcmVtb3ZlIHJlZmVyZW5jZXMgdG8gc3RybChjcHl8Y2F0KS5oIAogCjIwMDMwODI5CiAtIChiYWwpIG9wZW5ic2QtY29tcGF0LyBjbGVhbiB1cC4gIENvbnNpZGF0ZSBoZWFkZXJzLCBhZGQgaW4gSWQgb24gb3VyCiAgIGZpbGVzLCBhbmQgYWRkZWQgbWlzc2luZyBsaWNlbnNlIHRvIGhlYWRlci4KCjIwMDMwODI2CiAtIChkam0pIEJ1ZyAjNjI5OiBNYXJrIHNzaF9jb25maWcgb3B0aW9uICJwYW1hdXRoZW50aWNhdGlvbnZpYWtiZGludCIKICAgYXMgZGVwcmVjYXRlZC4gUmVtb3ZlIG1lbnRpb24gZnJvbSBSRUFETUUucHJpdnNlcC4gUGF0Y2ggZnJvbSAKICAgYWV0IEFUIGNjLmh1dC5maQogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yMiAxMDo1NjowOQogICAgIFthdXRoMi5jIGF1dGgyLWdzcy5jIGF1dGguaCBjb21wYXQuYyBjb21wYXQuaCBnc3MtZ2Vuci5jIGdzcy1zZXJ2LWtyYjUuYwogICAgIGdzcy1zZXJ2LmMgbW9uaXRvci5jIG1vbml0b3IuaCBtb25pdG9yX3dyYXAuYyBtb25pdG9yX3dyYXAuaCByZWFkY29uZi5jCiAgICAgcmVhZGNvbmYuaCBzZXJ2Y29uZi5jIHNlcnZjb25mLmggc2Vzc2lvbi5jIHNlc3Npb24uaCBzc2gtZ3NzLmgKICAgICBzc2hfY29uZmlnLjUgc3NoY29ubmVjdDIuYyBzc2hkX2NvbmZpZyBzc2hkX2NvbmZpZy41XQogICAgIHN1cHBvcnQgR1NTIEFQSSB1c2VyIGF1dGhlbnRpY2F0aW9uOyBwYXRjaGVzIGZyb20gU2ltb24gV2lsa2luc29uLAogICAgIHN0cmlwcGVkIGRvd24gYW5kIHRlc3RlZCBieSBKYWtvYiBhbmQgbXlzZWxmLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yMiAxMzoyMDowMwogICAgIFtzc2hjb25uZWN0Mi5jXQogICAgIHJlbW92ZSBzdXBwb3J0IGZvciAia2VyYmVyb3MtMkBzc2guY29tIgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yMiAxMzoyMjoyNwogICAgIFthdXRoMi5jXSAoYXV0aDIta3JiNS5jIHJlbW92ZWQpCiAgICAgbnVrZSAia2VyYmVyb3MtMkBzc2guY29tIgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wOC8yMiAyMDo1NTowNgogICAgIFtMSUNFTkNFXQogICAgIGFkZCBTaW1vbiBXaWxraW5zb24KICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzI0IDE3OjM2OjUyCiAgICAgW21vbml0b3IuYyBtb25pdG9yX3dyYXAuYyBzc2hjb25uZWN0Mi5jXQogICAgIDY0IGJpdCBjbGVhbnVwczsgbWFya3VzIG9rCiAgIC0gZmdzY2hAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMjUgMDg6MTM6MDkKICAgICBbc2Z0cC1pbnQuY10KICAgICBmaXggZGl2IGJ5IHplcm8gd2hlbiBsaXN0aW5nIGZvciBmaWxlbmFtZSBsZW5ndGhzIGxvbmdlciB0aGFuIHdpZHRoLgogICAgIG1hcmt1c0Agb2suCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzI1IDEwOjMzOjMzCiAgICAgW3NzaGNvbm5lY3QyLmNdCiAgICAgZnByaW50Zi0+bG9naXQgdG8gc2lsZW5jZSBsb2dpbiBiYW5uZXIgd2l0aCAic3NoIC1xIjsgb2sgbWFya3VzQAogLSAoZHR1Y2tlcikgW01ha2VmaWxlLmluIGFjY29uZmlnLmggYXV0aC1rcmI1LmMgYXV0aC1wYW0uYyBhdXRoLXBhbS5oCiAgIGNvbmZpZ3VyZS5hYyBkZWZpbmVzLmggZ3NzLXNlcnYta3JiNS5jIHNlc3Npb24uYyBzc2gtZ3NzLmggc3NoY29ubmVjdDEuYwogICBzc2hjb25uZWN0Mi5jXSBBZGQgUG9ydGFibGUgR1NTQVBJIHN1cHBvcnQsIHBhdGNoIGJ5IFNpbW9uIFdpbGtpbnNvbi4KIC0gKGR0dWNrZXIpIFtNYWtlZmlsZS5pbl0gUmVtb3ZlIGF1dGgyLWtyYjUuCiAtIChkdHVja2VyKSBbY29udHJpYi9haXgvaW52ZW50b3J5LnNoXSBBZGQgcHVibGljIGRvbWFpbiBub3RpY2UuICBvayBtb3VyaW5nQAogICAodGhlIG9yaWdpbmFsIGF1dGhvcikKIC0gKGR0dWNrZXIpIFthdXRoLmNdIERvIG5vdCBjaGVjayBmb3IgbG9ja2VkIGFjY291bnRzIHdoZW4gUEFNIGlzIGVuYWJsZWQuCgoyMDAzMDgyNQogLSAoZGptKSBCdWcgIzYyMTogU2VsZWN0IE9wZW5TQyBrZXlzIGJ5IHVzYWdlIGF0dHJpYnV0ZXMuIFBhdGNoIGZyb20gCiAgIGxhcnNjaEB0cnVzdGNlbnRlci5kZQogLSAoYmFsKSBvcGVuYnNkLWNvbXBhdC8gT3BlbkJTRCB1cGRhdGVzLiAgTW9zdGx5IGxpY2Vuc2luZywgYW5zaWZpY2F0aW9ucwogICBhbmQgbWlub3IgZml4ZXMuIE9LIGRqbUAKIC0gKGJhbCkgcmVkbyBob3cgd2UgaGFuZGxlICdteXNpZ25hbCgpJy4gIE1vdmUgaXQgdG8gCiAgIG9wZW5ic2QtY29tcGF0L2JzZC1taXNjLmMsIHMvbXlzaWduYWwvc2lnbmFsLyBhbmQgI2RlZmluZSBzaWduYWwgdG8KICAgYmUgb3VyICdteXNpZ25hbCcgYnkgZGVmYXVsdC4gIE9LIGRqbUAKIC0gKGR0dWNrZXIpIFthY2NvbmZpZy5oIGF1dGguYyBjb25maWd1cmUuYWMgc3NoZC44XSBCdWcgIzQyMiBhZ2FpbjogZGVueQogICBhbnkgYWNjZXNzIHRvIGxvY2tlZCBhY2NvdW50cy4gIG9rIGRqbUAKIC0gKGRqbSkgQnVnICM1NjQ6IFBlcmZvcm0gUEFNIGFjY291bnQgY2hlY2tzIGZvciBhbGwgYXV0aGVudGljYXRpb25zIHdoZW4KICAgVXNlUEFNPXllczsgb2sgZHR1Y2tlcgogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICM1MzMsICM1NTE6IGRlZmluZSBCUk9LRU5fR0VUQUREUklORk8gb24KICAgVHJ1NjQsIHNvbHZlcyBnZXRuYW1laW5mbyBhbmQgImJhZCBhZGRyIG9yIGhvc3QiIGVycm9ycy4gIG9rIGRqbUAKIC0gKGR0dWNrZXIpIFtSRUFETUUgYnVpbGRiZmYuc2ggaW52ZW50b3J5LnNoXSAoYWxsIGluIGNvbnRyaWIvYWl4KQogICBVcGRhdGUgcGFja2FnZSBidWlsZGVyOiBjb3JyZWN0bHkgaGFuZGxlIGNvbmZpZyB2YXJpYWJsZXMsIHVzZSBsc3VzZXIKICAgcmF0aGVyIHRoYW4gL2V0Yy9wYXNzd2QsIGZpeCB0eXBvcywgYWRkIElkJ3MuCgoyMDAzMDgyMgogLSAoZGptKSBzL2dldF9wcm9nbmFtZS9zc2hfZ2V0X3Byb2duYW1lL2cgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBIZWltZGFsIAogICAtbGJyb2tlbjsgb2sgZHR1Y2tlciAKIC0gKGR0dWNrZXIpIFtjb250cmliL2N5Z3dpbi9zc2gtdXNlci1jb25maWddIFB1dCBrZXlzIGluIGF1dGhvcml6ZWRfa2V5cwogICByYXRoZXIgdGhhdCBhdXRob3JpemVkX2tleXMyLiAgUGF0Y2ggZnJvbSB2aW5zY2hlbkByZWRoYXQuY29tLgoKMjAwMzA4MjEKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMTQgMTY6MDg6NTgKICAgICBbc3NoLWtleWdlbi5jXQogICAgIGV4aXQgYWZ0ZXIgcHJpbWV0ZXN0LCBvayBkam1ACiAtIChkdHVja2VyKSBbZGVmaW5lcy5oXSBQdXQgQ01TR19EQVRBLCBDTVNHX0ZJUlNUSERSIHdpdGggb3RoZXIgQ01TRyogbWFjcm9zLAogICBjaGFuZ2UgQ01TR19EQVRBIHRvIHVzZSBfX0NNU0dfQUxJR04gKGFuZCB0aHVzIHdvcmsgcHJvcGVybHkpLCByZWZvcm1hdCBmb3IKICAgY29uc2lzdGVuY3kuCiAtIChkdHVja2VyKSBbY29uZmlndXJlLmFjXSBNb3ZlIG9wZW5wdHkvY3R0eSB0ZXN0IG91dHNpZGUgb2YgY2FzZSBzdGF0ZW1lbnQKICAgYW5kIGFmdGVyIG5vcm1hbCBvcGVucHR5IHRlc3QuCgoyMDAzMDgxMwogLSAoZHR1Y2tlcikgW3Nlc3Npb24uY10gUmVtb3ZlICNpZmRlZiBUSU9DU0JSSyBrbHVkZ2UuCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzEzIDA4OjMzOjAyCiAgICAgW3Nlc3Npb24uY10KICAgICB1c2UgbW9yZSBwb3J0YWJsZSB0Y3NlbmRicmVhaygzKSBhbmQgaWdub3JlIGJyZWFrX2xlbmd0aDsKICAgICBvayBkZXJhYWR0LCBtaWxsZXJ0CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA4LzEzIDA4OjQ2OjMxCiAgICAgW2F1dGgxLmMgcmVhZGNvbmYuYyByZWFkY29uZi5oIHNlcnZjb25mLmMgc2VydmNvbmYuaCBzc2guYyBzc2hfY29uZmlnCiAgICAgc3NoX2NvbmZpZy41IHNzaGNvbm5lY3QxLmMgc3NoZC44IHNzaGQuYyBzc2hkX2NvbmZpZyBzc2hkX2NvbmZpZy41XQogICAgIHJlbW92ZSBSaG9zdHNBdXRoZW50aWNhdGlvbjsgc3VnZ2VzdGVkIGJ5IGRqbUAgYmVmb3JlOyBvayBkam1ALCBkZXJhYWR0QCwKICAgICBmZ3NjaEAsIG1pb2RALCBoZW5uaW5nQCwgamFrb2JAIGFuZCBvdGhlcnMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDgvMTMgMDk6MDc6MTAKICAgICBbcmVhZGNvbmYuYyBzc2guY10KICAgICBzb2NrczQtPnNvY2tzLCBzaW5jZSB3aXRoIHN1cHBvcnQgYm90aCA0IGFuZCA1OyBkdHVja2VyQHppcC5jb20uYXUKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWMgb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuYyBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5oXQogICBBZGQgYSB0Y3NlbmRicmVhayBmdW5jdGlvbiBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSBvbmUsIGJhc2VkIG9uIHRoZQogICBvbmUgZnJvbSBPcGVuQlNELgoKMjAwMzA4MTEKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgKHRoYW5rcyB0byBTaW1vbiBXaWxraW5zb24gZm9yIGhlbHAgd2l0aCB0aGlzIC1kdCkKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMTYgMTU6MDI6MDYKICAgICBbYXV0aC1rcmI1LmNdCiAgICAgbWNjIC0+IGZjYzsgZnJvbSBMb3ZlIEj2cm5xdWlzdCDFc3RyYW5kIDxsaGFAaXQuc3Uuc2U+CiAgICAgb3RoZXJ3aXNlIHRoZSBrZXJiZXJvcyBjcmVkZW50aW5hbCBpcyBzdG9yZWQgaW4gYSBtZW1vcnkgY2FjaGUKICAgICBpbiB0aGUgcHJpdmlsZWdlZCBzc2hkLiBvayBqYWJvYkAsIGhpbkAgKHNvbWUgdGltZSBhZ28pCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQveGNyeXB0LmNdIFJlbW92ZSBDeWd3aW4gI2lmZGVmIGJsb2NrIChkdXBsaWNhdGUKICAgaW4gYnNkLWN5Z3dpbl91dGlsLmgpLgoKMjAwMzA4MDgKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9mYWtlLXJmYzI1NTMuaF0gT2xkZXIgTGludXhlcyBoYXZlIEFJX1BBU1NJVkUgYW5kCiAgIEFJX0NBTk9OTkFNRSBpbiBuZXRkYi5oIGJ1dCBub3QgQUlfTlVNRVJJQ0hPU1QsIHNvIGNoZWNrIGVhY2ggZGVmaW5pdGlvbgogICBzZXBhcmF0ZWx5IGJlZm9yZSBkZWZpbmluZyB0aGVtLgogLSAoZHR1Y2tlcikgW2F1dGgtcGFtLmNdIERvbid0IHNldCBQQU1fVFRZIGlmIHR0eSBpcyBudWxsLiAgb2sgZGptQAoKMjAwMzA4MDcKIC0gKGR0dWNrZXIpIFtzZXNzaW9uLmNdIEhhdmUgc2Vzc2lvbl9icmVha19yZXEgbm90IGF0dGVtcHQgdG8gc2VuZCBhIGJyZWFrCiAgIGlmIFRJT0NTQlJLIGFuZCBUSU9DQ0JSSyBhcmUgbm90IGRlZmluZWQgKGVnIEN5Z3dpbikuCiAtIChkdHVja2VyKSBbY2Fub2hvc3QuY10gQnVnICMzMzY6IE9ubHkgY2hlY2sgaXAgb3B0aW9ucyBpZiBJUF9PUFRJT05TIGlzCiAgIGRlZmluZWQgKGZpeGVzIGNvbXBpbGUgZXJyb3Igb24gcmVhbGx5IG9sZCBMaW51eGVzKS4KIC0gKGR0dWNrZXIpIFtkZWZpbmVzLmhdIEJ1ZyAjMzM2OiBBZGQgQ01TR19EQVRBIGFuZCBDTVNHX0ZJUlNUSERSIG1hY3JvcyBpZgogICBub3QgYWxyZWFkeSBkZWZpbmVkIChlZyBMaW51eCB3aXRoIHNvbWUgdmVyc2lvbnMgb2YgbGliYzUpLCBiYXNlZCBvbiB0aG9zZQogICBmcm9tIE9wZW5CU0QuCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dpbl91dGlsLmMgb3BlbmJzZC1jb21wYXQvYnNkLWN5Z3dpbl91dGlsLmhdCiAgIFJlbW92ZSBpbmNvcnJlY3QgZmlsZW5hbWVzIGZyb20gY29tbWVudHMgKGZpbGUgbmFtZXMgYXJlIGluIElkIHRhZ3MpLgogLSAoZHR1Y2tlcikgW3Nlc3Npb24uYyBvcGVuYnNkLWNvbXBhdC9ic2QtY3lnd2luX3V0aWwuaF0gTW92ZSBDeWd3aW4KICAgc3BlY2lmaWMgZGVmaW5lcyBhbmQgaW5jbHVkZXMgdG8gYnNkLWN5Z3dpbl91dGlsLmguICBGaXhlcyBidWlsZCBlcnJvciB0b28uCgoyMDAzMDgwMgogLSAoZHR1Y2tlcikgW21vbml0b3IuaCBtb25pdG9yX3dyYXAuaF0gUmVtb3ZlIGV4Y2VzcyBpZGVudCB0YWdzLgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8yMiAxMzozNToyMgogICAgIFthdXRoMS5jIGF1dGguaCBhdXRoLXBhc3N3ZC5jIG1vbml0b3IuYyBtb25pdG9yLmggbW9uaXRvcl93cmFwLmMKICAgICBtb25pdG9yX3dyYXAuaCByZWFkY29uZi5jIHJlYWRjb25mLmggc2VydmNvbmYuYyBzZXJ2Y29uZi5oIHNlc3Npb24uYyBzc2guMQogICAgIHNzaC5jIHNzaF9jb25maWcuNSBzc2hjb25uZWN0MS5jIHNzaGQuYyBzc2hkX2NvbmZpZy41IHNzaC5oXQogICAgIHJlbW92ZSAoYWxyZWFkeSBkaXNhYmxlZCkgS1JCNC9BRlMgc3VwcG9ydCwgcmUtZW5hYmxlIC1rIGluIHNzaCgxKTsKICAgICB0ZXN0K29rIGhlbm5pbmdACiAtIChkdHVja2VyKSBbTWFrZWZpbGUuaW4gYWNjb25maWcuaCBjb25maWd1cmUuYWNdIFJlbW92ZSBLUkI0L0FGUyBzdXBwb3J0LgogLSAoZHR1Y2tlcikgW2F1dGgta3JiNC5jIHJhZGl4LmMgcmFkaXguaF0gUmVtb3ZlIEtSQjQvQUZTIHNwZWNpZmljIGZpbGVzLgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8yMyAwNzo0Mjo0MwogICAgIFtzc2hkX2NvbmZpZ10KICAgICByZW1vdmUgQUZTOyBpdG9qdW5ACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzI4IDA5OjQ5OjU2CiAgICAgW3NzaC1rZXlnZW4uMSBzc2gta2V5Z2VuLmNdCiAgICAgU3VwcG9ydCBmb3IgZ2VuZXJhdGluZyBEaWZmaWUtSGVsbG1hbiBncm91cHMgKC9ldGMvbW9kdWxpKSBmcm9tIHNzaC1rZXlnZW4uCiAgICAgQmFzZWQgb24gY29kZSBmcm9tIFBoaWwgS2FybiwgV2lsbGlhbSBBbGxlbiBTaW1wc29uIGFuZCBOaWVscyBQcm92b3MuCiAgICAgb2sgbWFya3VzQCwgdGhhbmtzIGptY0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMjkgMTg6MjQ6MDAKICAgICBbTElDRU5DRSBwcm9ncmVzc21ldGVyLmNdCiAgICAgcmVwbGFjZSA0IGNsYXVzZSBCU0QgbGljZW5zZWQgcHJvZ3Jlc3NtZXRlciBjb2RlIHdpdGggYSByZXBsYWNlbWVudAogICAgIGZyb20gTmlscyBOb3JkbWFuIGFuZCBteXNlbGY7IG9rIGRlcmFhZHRACiAgICAgKGNvcGllZCBmcm9tIE9wZW5CU0QgYW4gcmUtYXBwbGllZCBwb3J0YWJsZSBjaGFuZ2VzKQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8yOSAxODoyNjo0NgogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgZml4IGxlbmd0aCBmb3IgIi0gc3RhbGxlZCAtIiAoaW5jbHVkZWQgd2l0aCBwcmV2aW91cyBpbXBvcnQpCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzMwIDA3OjQ0OjE0CiAgICAgW3Byb2dyZXNzbWV0ZXIuY10KICAgICB1c2Ugb25seSA0IGRpZ2l0cyBpbiBmb3JtYXRfc2l6ZSAoaW5jbHVkZWQgd2l0aCBwcmV2aW91cyBpbXBvcnQpCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzMwIDA3OjUzOjI3CiAgICAgW3Byb2dyZXNzbWV0ZXIuY10KICAgICB3aGl0ZXNwYWNlIChpbmNsdWRlZCB3aXRoIHByZXZpb3VzIGltcG9ydCkKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMzEgMDk6MjE6MDIKICAgICBbYXV0aDItbm9uZS5jXQogICAgIGNoZWNrIHdoZXRoZXIgcGFzc3dkIGF1dGggaXMgYWxsb3dkLCBzaW1pbGFyIHRvIHByb3RvIDE7IHJvYkBwaXRtYW4uY28uemEKICAgICBvayBoZW5uaW5nCiAgIC0gYXZzbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8zMSAxNTo1MDoxNgogICAgIFthdG9taWNpby5jXQogICAgIGNvcnJlY3QgY29tbWVudDogYXRvbWljaW8gdGFrZXMgdndyaXRlLCBub3Qgd3JpdGU7IGRlcmFhZHRAIG9rCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzMxIDIyOjM0OjAzCiAgICAgW3Byb2dyZXNzbWV0ZXIuY10KICAgICBwcmludCByYXRlIHNpbWlsYXIgb2xkIHZlcnNpb247IHJvdW5kIGluc3RlYWQgdHJ1bmNhdGU7CiAgICAgKGluY2x1ZGVkIGluIHByZXZpb3VzIHByb2dyZXNzbWV0ZXIuYyBjb21taXQpCiAtIChkdHVja2VyKSBbb3BlbmJzZC1jb21wYXQvYnNkLW1pc2MuYyBvcGVuYnNkLWNvbXBhdC9ic2QtbWlzYy5oXQogICBBZGQgYSB0Y2dldHBncnAgZnVuY3Rpb24uCiAtIChkdHVja2VyKSBbTWFrZWZpbGUuaW4gbW9kdWxpLmMgbW9kdWxpLmhdIEFkZCBuZXcgZmlsZXMgYW5kIHRvIE1ha2VmaWxlLgogLSAoZHR1Y2tlcikgW29wZW5ic2QtY29tcGF0L2JzZC1taXNjLmNdIEZpeCBjdXQtYW5kLXBhc3RlIGJ1ZyBpbiB0Y2dldHBncnAuCgoyMDAzMDczMAogLSAoZGptKSBbYXV0aC1wYW0uY10gRG9uJ3QgdXNlIGNyYXBweSBBUElzIGxpa2Ugc3ByaW50Zi4gVGhhbmtzIGJhbAoKMjAwMzA3MjYKIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC94Y3J5cHQuY10gRml4IHR5cG86IERJU0FCTEVEX1NIQURPVyAtPgogICBESVNBQkxFX1NIQURPVy4gIEZpeGVzIEhQLVVYIGNvbXBpbGUgZXJyb3IuCgoyMDAzMDcyNAogLSAoYmFsKSBbYXV0aC1wYXNzd2QuYyBvcGVuYnNkLWNvbXBhdC9NYWtlZmlsZS5pbiBvcGVuYnNkLWNvbXBhdC94Y3J5cHQuYyAKICAgIG9wZW5ic2QtY29tcGF0L3hjcnlwdC5oXSBTcGxpdCBvZmYgZW5jcnlwdGlvbiBpbnRvIHhjcnlwdCgpIGludGVyZmFjZSwKICAgIGFuZCBpc29sYXRlIHNoYWRvdyBwYXNzd29yZCBmdW5jdGlvbnMuICBUZXN0ZWQgaW4gU29sYXJpcywgYnV0IHNob3VsZAogICAgbm90IGJyZWFrIG90aGVyIHBsYXRmb3JtcyB0b28gYmFkbHkgKGV4Y2VwdCBtYXliZSBIUCA9KS4gIEFsc28gYnJpbmdzCiAgICBhdXRoLXBhc3N3ZC5jIGludG8gZnVsbCBzeW5jIHdpdGggT3BlbkJTRCB0cmVlLgoKMjAwMzA3MjMKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJhY2sgb3V0IGNoYW5nZSBmb3IgYnVnICM2MjAuCgoyMDAzMDcxOQogLSAoZHR1Y2tlcikgW2NvbmZpZ3VyZS5hY10gQnVnICM2MjA6IERlZmluZSBCUk9LRU5fR0VUQUREUklORk8gZm9yCiAgIFNvbGFyaXMveDg2LiAgUGF0Y2ggZnJvbSBqcmhldHQgYXQgaXNpdGUubmV0LgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8xNCAxMjozNjozNwogICAgIFtzc2hkLmNdCiAgICAgcmVtb3ZlIHVuZG9jdW1lbnRlZCAtViBvcHRpb24uIHdvdWxkIGJlIG9ubHkgdXNlZnVsIGlmIG9wZW5zc2ggaXMgdXNlZAogICAgIGFzIHNzaCB2MSBzZXJ2ZXIgZm9yIHNzaC5jb20ncyBzc2ggdjIuCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzE2IDEwOjM0OjUzCiAgICAgW3NzaC5jIHNzaGQuY10KICAgICBkb24ndCBleGl0IG9uIG11bHRpcGxlIC12IG9yIC1kOyBvayBkZXJhYWR0QAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8xNiAxMDozNjoyOAogICAgIFtzc2h0dHkuY10KICAgICBjbGVhciBJVUNMQyBpbiBlbnRlcl9yYXdfbW9kZTsgZnJvbSByb2JAcGl0bWFuLmNvLnphOyBvayBkZXJhYWR0QCwgZmdzQAogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMTggMDE6NTQ6MjUKICAgICBbc2NwLmNdCiAgICAgdXNlcmlkIGlzIHVuc2lnbmVkLCBidXQgd2VsbCwgZm9yY2UgaXQgYW55d2F5czsgYW5kcnVzaG9ja0Brb3Jvdmluby5uZXQKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMTkgMDA6NDU6NTMKICAgICBbc2Z0cC1pbnQuY10KICAgICBmaXggc2Z0cCBmaWxlbmFtZSBwYXJzaW5nIGZvciBhcmd1bWVudHMgd2l0aCBlc2NhcGVkIHF1b3Rlcy4gYnogIzUxNzsKICAgICBvayBtYXJrdXMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMTkgMDA6NDY6MzEKICAgICBbcmVncmVzcy9zZnRwLWNtZHMuc2hdCiAgICAgcmVncmVzcyB0ZXN0IGZvciBzZnRwIGFyZ3VtZW50cyB3aXRoIGVzY2FwZWQgcXVvdGVzOyBvayBtYXJrdXMKCjIwMDMwNzE0CiAtIChkdHVja2VyKSBbYWNjb25maWcuaCBjb25maWd1cmUuYWMgcG9ydC1haXguY10gT2xkZXIgQUlYZXMgZG9uJ3QgZGVjbGFyZQogICBsb2dpbmZhaWxlZCBhdCBhbGwsIHNvIGFzc3VtZSAzLWFyZyBsb2dpbmZhaWxlZCBpZiBub3QgZGVjbGFyZWQuCiAtIChkdHVja2VyKSBbcG9ydC1haXguaF0gV29yayBhcm91bmQgbmFtZSBjb2xsaXNpb24gb24gQUlYIGZvciByX3R5cGUgYnkKICAgdW5kZWYnaW5nIGl0LgogLSAoZHR1Y2tlcikgQnVnICM1NDM6IFtjb25maWd1cmUuYWMgcG9ydC1haXguYyBwb3J0LWFpeC5oXQogICBDYWxsIHNldGF1dGhkYigpIGJlZm9yZSBsb2dpbmZhaWxlZCgpLCB3aGljaCBtYXkgbG9hZCBwYXNzd29yZCByZWdpc3RyeS0KICAgc3BlY2lmaWMgZnVuY3Rpb25zLiAgQmFzZWQgb24gcGF0Y2ggYnkgY2F3bGZpZWwgYXQgdXMuaWJtLmNvbS4KIC0gKGR0dWNrZXIpIFtwb3J0LWFpeC5oXSBGaXggcHJvdG90eXBlcy4KIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBhdnNtQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzA5IDEzOjU4OjE5CiAgICAgW2tleS5jXQogICAgIG1pbm9yIHR3ZWFrOiB3aGVuIGdlbmVyYXRpbmcgdGhlIGhleCBmaW5nZXJwcmludCwgZ2l2ZSBzdHJsY2F0IHRoZSBmdWxsCiAgICAgYm91bmQgdG8gdGhlIGJ1ZmZlciwgYW5kIGFkZCBhIGNvbW1lbnQgYmVsb3cgZXhwbGFpbmluZyB3aHkgdGhlCiAgICAgemVyby10ZXJtaW5hdGlvbiBpcyBvbmUgbGVzcyB0aGFuIHRoZSBib3VuZC4gIG1hcmt1c0Agb2sKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMTAgMTQ6NDI6MjgKICAgICBbcGFja2V0LmNdCiAgICAgdGhlIDJeKGJsb2Nrc2l6ZSoyKSByZWtleWluZyBsaW1pdCBpcyB0b28gZXhwZW5zaXZlIGZvciAzREVTLAogICAgIGJsb3dmaXNoLCBldGMsIHNvIGVuZm9yY2UgYSAxR0IgbGltaXQgZm9yIHNtYWxsIGJsb2Nrc2l6ZXMuCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzEwIDIwOjA1OjU1CiAgICAgW3NmdHAuY10KICAgICBzeW5jIHVzYWdlIHdpdGggbWFucGFnZSwgYWRkIG1pc3NpbmcgLVIKCjIwMDMwNzA4CiAtIChkdHVja2VyKSBbYWNjb25maWcuaCBhdXRoLXBhc3N3ZC5jIGNvbmZpZ3VyZS5hYyBzZXNzaW9uLmMgcG9ydC1haXguW2NoXV0KICAgSW5jbHVkZSBBSVggaGVhZGVycyBmb3IgYXV0aGVudGljYXRpb24gZnVuY3Rpb25zIGFuZCBtYWtlIGNhbGxzIG1hdGNoCiAgIHByb3RvdHlwZXMuICBUZXN0IGZvciBhbmQgaGFuZGxlIDMtYXJnIGFuZCA0LWFyZyB2YXJpYW50cyBvZiBsb2dpbmZhaWxlZC4KIC0gKGR0dWNrZXIpIFtzZXNzaW9uLmNdIENoZWNrIHJldHVybiB2YWx1ZSBvZiBzZXRwY3JlZCgpLgogLSAoZHR1Y2tlcikgW2F1dGgtcGFzc3dkLmMgYXV0aC5jIHNlc3Npb24uYyBzc2hkLmMgcG9ydC1haXguYyBwb3J0LWFpeC5oXQogICBDb252ZXJ0IGFpeGxvZ2lubXNnIGludG8gcGxhdGZvcm0taW5kZXBlbmRhbnQgQnVmZmVyIGxvZ2lubXNnLgoKMjAwMzA3MDcKIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNjAwOiBDaGVjayB0aGF0IGdldHJ1c2FnZSBpcyBkZWNsYXJlZCBiZWZvcmUKICAgc2VhcmNoaW5nIGxpYnJhcmllcyBmb3IgaXQuICBGaXhlcyBidWlsZCBlcnJvcnMgb24gTkNSIE1QLVJBUy4KCjIwMDMwNzA2CiAtIChkdHVja2VyKSBbc3NoLXJhbmQtaGVscGVyLmMgbG9naW5yZWMuY10KICAgQXBwbHkgYXRvbWljaW8gdHlwaW5nIGNoYW5nZSB0byB0aGVzZSB0b28uCgoyMDAzMDcwMwogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8yOCAwNzo0ODoxMAogICAgIFtzc2hkLmNdCiAgICAgcmVwb3J0IHBpZGZpbGUgY3JlYXRpb24gZXJyb3JzLCBiYXNlZCBvbiBwYXRjaCBmcm9tIFJvdW1lbiBQZXRyb3Y7CiAgICAgb2sgbWFya3VzQAogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjggMTY6MjM6MDYKICAgICBbYXRvbWljaW8uYyBhdG9taWNpby5oIGF1dGhmZC5jIGNsaWVudGxvb3AuYyBtb25pdG9yX3dyYXAuYyBtc2cuYwogICAgIHByb2dyZXNzbWV0ZXIuYyBzY3AuYyBzZnRwLWNsaWVudC5jIHNzaC1rZXlzY2FuLmMgc3NoLmggc3NoY29ubmVjdC5jCiAgICAgc3NoZC5jXQogICAgIGRlYWwgd2l0aCB0eXBpbmcgb2Ygd3JpdGUgdnMgcmVhZCBpbiBhdG9taWNpbwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8yOSAxMjo0NDozOAogICAgIFtzc2hjb25uZWN0LmNdCiAgICAgbWVtc2V0IDAsIG5vdCBcMDsgYW5kcnVzaG9ja0Brb3Jvdmluby5uZXQKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMDIgMTI6NTY6MzQKICAgICBbY2hhbm5lbHMuY10KICAgICBkZW55IGR5bmFtaWMgZm9yd2FyZGluZyB3aXRoIC1SIGZvciB2MSwgdG9vOyBvayBkam1ACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzAyIDE0OjUxOjE2CiAgICAgW2NoYW5uZWxzLmMgc3NoLjEgc3NoX2NvbmZpZy41XQogICAgIChyZSlhZGQgc29ja3M1IHN1cHBwb3J0IHRvIC1EOyBvayBkam1ACiAgICAgbm93IHNzaCgxKSBjYW4gYWN0IGJvdGggYXMgYSBzb2NrcyA0IGFuZCBzb2NrcyA1IHNlcnZlciBhbmQKICAgICBkeW5hbWljYWxseSBmb3J3YXJkIHBvcnRzLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8wMiAyMDozNzo0OAogICAgIFtzc2guY10KICAgICBjb252ZXJ0IGhvc3RrZXlhbGlhcyB0byBsb3dlcmNhc2UsIG90aGVyd2lzZSB1cHBlcmNhc2UgYWxpYXNlcyB3aWxsCiAgICAgbm90IG1hdGNoIGF0IGFsbDsgb2sgaGVubmluZ0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDcvMDMgMDg6MjE6NDYKICAgICBbcmVncmVzcy9keW5hbWljLWZvcndhcmQuc2hdCiAgICAgYWRkIHNvY2tzNTsgc3BlZWR1cDsgcmVmb3JtYXQ7IGJhc2VkIG9uIHBhdGNoIGZyb20gZHR1Y2tlckB6aXAuY29tLmF1CiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA3LzAzIDA4OjI0OjEzCiAgICAgW3JlZ3Jlc3MvTWFrZWZpbGVdCiAgICAgZW5hYmxlIHRlc3RzIGZvciBkeW5hbWljIGZ3ZCB2aWEgc29ja3MgKC1EKSwgdXNlcyBuYygxKQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNy8wMyAwODowOTowNgogICAgIFtyZWFkY29uZi5jIHJlYWRjb25mLmggc3NoLWtleXNpZ24uYyBzc2guY10KICAgICBmaXggQWRkcmVzc0ZhbWlseSBvcHRpb24gaW4gY29uZmlnIGZpbGUsIGZyb20gYnJlbnRAZ3JhdmVsYW5kLm5ldDsKICAgICBvayBtYXJrdXNACgoyMDAzMDYzMAogLSAoZGptKSBTZWFyY2ggZm9yIHN1cHBvcnQgZnVuY3Rpb25zIG5lY2Vzc2FyeSB0byBidWlsZCBvdXIgCiAgIGdldHJyc2V0YnluYW1lKCkgcmVwbGFjZW1lbnQuIFBhdGNoIGZyb20gUm91bWVuIFBldHJvdiAKCjIwMDMwNjI5CiAtIChkdHVja2VyKSBbaW5jbHVkZXMuaF0gQnVnICM2MDI6IG1vdmUgI2luY2x1ZGUgb2YgbmV0ZGIuaCB0byBhZnRlciBpbi5oCiAgIChmaXhlcyBjb21waWxlciB3YXJuaW5ncyBvbiBTb2xhcmlzIDIuNS4xKS4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEFkZCBzYW5pdHkgdGVzdCBhZnRlciBzeXN0ZW0tZGVwZW5kYW50IGNvbXBpbGVyCiAgIGZsYWcgbW9kaWZpY2F0aW9ucy4KICAgCjIwMDMwNjI4CiAtIChkam0pIEJ1ZyAjNTkxOiB1c2UgUEtDUyMxNSBwcml2YXRlIGtleSBsYWJlbCBhcyBhIGNvbW1lbnQgaW4gY2FzZSAKICAgb2YgT3BlblNDLiBSZXBvcnQgYW5kIHBhdGNoIGZyb20gbGFyc2NoQHRydXN0Y2VudGVyLmRlCiAtIChkam0pIEJ1ZyAjNTkzOiBTYW5pdHkgY2hlY2sgT3BlblNDIGNhcmQgcmVhZGVyIG51bWJlcjsgcGF0Y2ggZnJvbSAKICAgYWpAZHVuZ2Vvbi5pbmthLmRlCiAtIChkdHVja2VyKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzIzIDA5OjAyOjQ0CiAgICAgW3NzaF9jb25maWcuNV0KICAgICBkb2N1bWVudCBFbmFibGVTU0hLZXlzaWduOyBidWd6aWxsYSAjNTk5OyBvayBkZXJhYWR0QCwgam1jQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8yNCAwODoyMzo0NgogICAgIFthdXRoMi1ob3N0YmFzZWQuYyBhdXRoMi1wdWJrZXkuYyBhdXRoMi5jIGNoYW5uZWxzLmMga2V5LmMga2V5LmgKICAgICAgbW9uaXRvci5jIHBhY2tldC5jIHBhY2tldC5oIHNlcnZlcmxvb3AuYyBzc2hjb25uZWN0Mi5jIHNzaGQuY10KICAgICBpbnQgLT4gdV9pbnQ7IG9rIGRqbUAsIGRlcmFhZHRALCBtb3VyaW5nQAogICAtIG1pb2RAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjUgMjI6Mzk6MzYKICAgICBbc2Z0cC1zZXJ2ZXIuY10KICAgICBUeXBvIHBvbGljZTogYXR0cmlidXRlIGlzIGJldHRlciB3cml0dGVuIHdpdGggYW4gJ3InLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8yNiAyMDowODozMwogICAgIFtyZWFkY29uZi5jXQogICAgIGRvIG5vdCBkdW1wIGNvcmUgZm9yICdzc2ggLW8gcHJveHljb21tYW5kIGhvc3QnOyBvayBkZXJhYWR0QAogLSAoZHR1Y2tlcikgW3JlZ3Jlc3MvZHluYW1pYy1mb3J3YXJkLnNoXSBJbXBvcnQgbmV3IHJlZ3Jlc3Npb24gdGVzdC4KIC0gKGR0dWNrZXIpIFtjb25maWd1cmUuYWNdIEJ1ZyAjNTcwOiBIYXZlIC4vY29uZmlndXJlIC0tZW5hYmxlLUZFQVRVUkUgCiAgIGFjdHVhbGx5IGVuYWJsZSB0aGUgZmVhdHVyZSwgZm9yIHRob3NlIG5vcm1hbGx5IGRpc2FibGVkLiAgUGF0Y2ggYnkKICAgb3BlbnNzaCAoYXQpIHJvdW1lbnBldHJvdi5pbmZvLgoKMjAwMzA2MjQKIC0gKGR0dWNrZXIpIEhhdmUgY29uZmlndXJlIHJlZmVyIHRoZSB1c2VyIHRvIGNvbmZpZy5sb2cgYW5kCiAgIGNvbnRyaWIvZmluZHNzbC5zaCBmb3IgT3BlblNTTCBoZWFkZXIvbGlicmFyeSBtaXNtYXRjaGVzLgoKMjAwMzA2MjIKIC0gKGR0dWNrZXIpIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMjEgMDk6MTQ6MDUKICAgICBbcmVncmVzcy9yZWNvbmZpZ3VyZS5zaF0KICAgICBtaXNzaW5nICRTVURPOyBmcm9tIGR0dWNrZXJAemlwLmNvbS5hdQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xOCAxMToyODoxMQogICAgIFtzc2gtcnNhLmNdCiAgICAgYmFja291dCBsYXN0IGNoYW5nZSwgc2luY2UgaXQgdmlvbGF0ZXMgcGtjcyMxCiAgICAgc3dpdGNoIHRvIHNoYXJlL21pc2MvbGljZW5zZS50ZW1wbGF0ZQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8yMCAwNTo0Nzo1OAogICAgIFtzc2hkX2NvbmZpZy41XQogICAgIHN5bmMgZGVzY3JpcHRpb24gb2YgcHJvdG9jb2wgMiBjaXBoZXIgcHJvcG9zYWw7IG9rIG1hcmt1cwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8yMCAwNTo0ODoyMQogICAgIFtzc2hkX2NvbmZpZ10KICAgICBzeW5jIHNvbWUgaW1wbGVtZW50ZWQgb3B0aW9uczsgb2sgbWFya3VzQAogLSAoZHR1Y2tlcikgW3JlZ3Jlc3MvYXV0aG9yaXplZF9rZXlzX3Jvb3RdIFJlbW92ZSB0ZW1wIGRhdGEgZmlsZSBmcm9tIENWUy4KIC0gKGR0dWNrZXIpIFtvcGVuYnNkLWNvbXBhdC9zZXRwcm9jdGl0bGUuY10gRW5zdXJlIFNQVF9UWVBFIGlzIGRlZmluZWQgYmVmb3JlCiAgIHRlc3RpbmcgaXRzIHZhbHVlLgoKMjAwMzA2MTgKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xMiAwNzo1NzozOAogICAgIFttb25pdG9yLmMgc3NobG9naW4uYyBzc2hwdHkuY10KICAgICB0eXBvczsgZHR1Y2tlciBhdCB6aXAuY29tLmF1CiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzEyIDEyOjIyOjQ3CiAgICAgW0xJQ0VOQ0VdCiAgICAgbWVudGlvbiBtb3JlIGNvcHlyaWdodCBob2xkZXJzOyBvayBtYXJrdXNACiAgIC0gbmlub0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xMiAxNTozNDowOQogICAgIFtzY3AuY10KICAgICBUeXBvLiBPayBtYXJrdXNALgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xMiAxOToxMjowMwogICAgIFtzY2FyZC5jIHNjYXJkLmggc3NoLWFnZW50LmMgc3NoLmNdCiAgICAgYWRkIHNjX2dldF9rZXlfbGFiZWw7IGxhcnNjaCBhdCB0cnVzdGNlbnRlci5kZTsgYnVnemlsbGEjNTkxCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzE2IDA4OjIyOjM1CiAgICAgW3NzaC1yc2EuY10KICAgICBtYWtlIHN1cmUgdGhlIHNpZ25hdHVyZSBoYXMgYXQgbGVhc3QgdGhlIGV4cGVjdGVkIGxlbmd0aCAoZG9uJ3QKICAgICBpbnNpc3Qgb24gbGVuID09IGhsZW4gKyBvaWRsZW4sIHNpbmNlIHRoaXMgYnJlYWtzIHNvbWUgc21hcnRjYXJkcykKICAgICBidWd6aWxsYSAjNTkyOyBvayBkam1ACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzE2IDEwOjIyOjQ1CiAgICAgW3NzaC1hZGQuY10KICAgICBwcmludCBvdXQga2V5IGNvbW1lbnQgb24gZWFjaCBwcm9tcHQ7IG1ha2Ugc3NoLWFza3Bhc3MgbW9yZSB1c2VhYmxlOyBvayBkam1ACiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzE3IDE4OjE0OjIzCiAgICAgW2NpcGhlci1jdHIuY10KICAgICB1c2UgbGljZW5zZSBmcm9tIC91c3Ivc2hhcmUvbWlzYy9saWNlbnNlLnRlbXBsYXRlIGZvciBuZXcgY29kZQogLSAoZHR1Y2tlcikgW3JlY29uZmlndXJlLnNoIHJla2V5LnNoIHNmdHAtYmFkY21kcy5zaF0KICAgSW1wb3J0IG5ldyByZWdyZXNzaW9uIHRlc3RzIGZyb20gT3BlbkJTRAogLSAoZHR1Y2tlcikgW3JlZ3Jlc3MvY29weS4xIHJlZ3Jlc3MvY29weS4yXSBSZW1vdmUgdGVtcCBkYXRhIGZpbGVzIGZyb20gQ1ZTLgogLSAoZHR1Y2tlcikgT3BlbkJTRCBDVlMgU3luYyAocmVncmVzcy8pCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzAyIDEyOjIxOjEzCiAgICAgW01ha2VmaWxlXQogICAgIGVuYWJsZSByZWtleSB0ZXN0CiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzA0IDA5OjM0OjIyCiAgICAgW01ha2VmaWxlIHNmdHAtY21kcy5zaF0KICAgICBNb3JlIHJlZ3Jlc3Npb24gdGVzdHMsIGluY2x1ZGluZyByZWNlbnQgZGlyZWN0b3J5IHJlbmFtZSBidWc7IG9rIG1hcmt1c0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTQgMjI6MDg6MjcKICAgICBbc3NoLWNvbS1jbGllbnQuc2ggc3NoLWNvbS1rZXlnZW4uc2ggc3NoLWNvbS1zZnRwLnNoIHNzaC1jb20uc2hdCiAgICAgdGVzdCBhZ2FpbnN0IHNvbWUgbmV3IGNvbW1lcmljYWwgdmVyc2lvbnMKICAgLSBtb3VyaW5nQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE1IDA0OjA3OjEyCiAgICAgW3NmdHAtY21kcy5zaF0KICAgICBBZHZhbmNlZCBwdXQvZ2V0IHRlc3RpbmcgZm9yIHNmdHAuICBPSyBAZGptCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzEyIDE1OjQwOjAxCiAgICAgW3RyeS1jaXBoZXJzLnNoXQogICAgIGFkZCBjdHIKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTIgMTU6NDM6MzIKICAgICBbTWFrZWZpbGVdCiAgICAgdGVzdCAtSFVQOyBkdHVja2VyIGF0IHppcC5jb20uYXUKCjIwMDMwNjE0CiAtIChkam0pIFVwZGF0ZSBsaWNlbnNlIG9uIGZha2UtcmZjMjU1My5bY2hdOyBvayBpdG9qdW5ACgoyMDAzMDYxMQogLSAoZGptKSBNZW50aW9uIHBvcnRhYmxlIGNvcHlyaWdodCBob2xkZXJzIGluIExJQ0VOU0UKIC0gKGRqbSkgUHV0IGxpY2Vuc2VzIG9uIHN1YnN0YW50aWFsIGhlYWRlciBmaWxlcwogLSAoZGptKSBTeW5jIExJQ0VOU0UgYWdhaW5zdCBPcGVuQlNECiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTAgMDk6MTI6MTEKICAgICBbc2NwLjEgc2Z0cC1zZXJ2ZXIuOCBzc2guMSBzc2gtYWRkLjEgc3NoLWFnZW50LjEgc3NoX2NvbmZpZy41XQogICAgIFtzc2hkLjggc3NoZF9jb25maWcuNSBzc2gta2V5Z2VuLjEgc3NoLWtleXNjYW4uMSBzc2gta2V5c2lnbi44XQogICAgIC0gc2VjdGlvbiByZW9yZGVyCiAgICAgLSBDT01QQVRJQklMSVRZIG1lcmdlCiAgICAgLSBtYWNybyBjbGVhbnVwCiAgICAgLSBraWxsIHdoaXRlc3BhY2UgYXQgRU9MCiAgICAgLSBuZXcgc2VudGVuY2UsIG5ldyBsaW5lCiAgICAgc3NoIHBhZ2VzIG9rIG1hcmt1c0AKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzEwIDIyOjIwOjUyCiAgICAgW3BhY2tldC5jIHByb2dyZXNzbWV0ZXIuY10KICAgICBtb3N0bHkgYW5zaSBjbGVhbnVwOyBwdmFsIG9rCiAgIC0gamFrb2JAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTEgMTA6MTY6MTYKICAgICBbc3NoY29ubmVjdC5jXQogICAgIGNsZWFuIHVwIGNoZWNrX2hvc3Rfa2V5KCkgYW5kIGltcHJvdmUgU1NIRlAgZmVlZGJhY2suIG9rIG1hcmt1c0AKICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8xMSAxMDoxODo0NwogICAgIFtkbnMuY10KICAgICBzeW5jIHdpdGggY2hlY2tfaG9zdF9rZXkoKSBjaGFuZ2UKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMTEgMTE6MTg6MzgKICAgICBbYXV0aGZkLmMgYXV0aGZkLmggc3NoLWFkZC5jIHNzaC1hZ2VudC5jXQogICAgIG1ha2UgYWdlbnQgY29uc3RyYWludHMgKGxpZmV0aW1lLCBjb25maXJtKSB3b3JrIHdpdGggc21hcnRjYXJkIGtleXM7IAogICAgIG9rIG1hcmt1c0AKCgoyMDAzMDYwOQogLSAoZGptKSBTeW5jIFJFQURNRS5zbWFydGNhcmQgd2l0aCBPcGVuQlNEIC1jdXJyZW50CiAtIChkam0pIFJlLW1lcmdlIE9wZW5TQyBpbmZvIGludG8gUkVBRE1FLnNtYXJ0Y2FyZAoKMjAwMzA2MDYKIC0gKGR0dWNrZXIpIFt1aWRzd2FwLmNdIEZpeCBzZXRyZXVpZCBhbmQgYWRkIG1pc3NpbmcgYXJncyB0byBmYXRhbCgpLiBvayBkam1ACgoyMDAzMDYwNQogLSAoZGptKSBTdXBwb3J0IEFJX05VTUVSSUNIT1NUIGluIGZha2UtZ2V0YWRkcmluZm8uYy4gTmVlZGVkIGZvciByZWNlbnQKICAgY2Fub2hvc3QuYyBjaGFuZ2VzLgogLSAoZGptKSBJbXBsZW1lbnQgcGFyYW5vaWQgcHJpdiBkcm9wcGluZyBjaGVja3MsIGJhc2VkIG9uOgogICAiU2V0VUlEIGRlbXlzdGlmaWVkIiAtIEhhbyBDaGVuLCBEYXZpZCBXYWduZXIgYW5kIERyZXcgRGVhbgogICBQcm9jZWVkaW5ncyBvZiBVU0VOSVggU2VjdXJpdHkgU3ltcG9zaXVtIDIwMDIKIC0gKGRqbSkgRG9uJ3QgdXNlIHhtYWxsb2MoKSBvciBwdWxsIGluIHRvcGxldmVsIGhlYWRlcnMgaW4gZmFrZS0qIGNvZGUKIC0gKGRqbSkgTWVyZ2UgYWxsIHRoZSBvcGVuYnNkL2Zha2UtKiBpbnRvIGZha2UtcmZjMjU1My5bY2hdCiAtIChkam0pIEJ1ZyAjNTg4IC0gQWRkIHNjYXJkLW9wZW5zYy5vIGJhY2sgdG8gTWFrZWZpbGUuaW4KICAgUGF0Y2ggZnJvbSBsYXJzY2hAdHJ1c3RjZW50ZXIuZGUKIC0gKGRqbSkgQnVnICM1ODkgLSBzY2FyZC1vcGVuc2M6IGxvYWQgb25seSBrZXlzIHdpdGggYSBwcml2YXRlIGtleXMKICAgUGF0Y2ggZnJvbSBsYXJzY2hAdHJ1c3RjZW50ZXIuZGUKIC0gKGR0dWNrZXIpIEFkZCBpbmNsdWRlcy5oIHRvIGZha2UtcmZjMjU1My5jIHNvIGl0IHdpbGwgYnVpbGQuCiAtIChkdHVja2VyKSBEZWZpbmUgRUFJX05PTkFNRSBpbiBmYWtlLXJmYzI1NTMuaCAodXNlZCBieSBmYWtlLXJmYzI1NTMuYykuCgoyMDAzMDYwNAogLSAoZGptKSBCdWcgIzU3MyAtIFJlbW92ZSB1bm5lZWRlZCBLcmIgaGVhZGVycyBhbmQgY29tcGF0IGdvb3AuIFBhdGNoIGZyb20KICAgc2ltb25Ac3h3Lm9yZy51ayAoQWxzbyBtYXRjaGVzIGEgY2hhbmdlIGluIE9wZW5CU0QgYSB3aGlsZSBhZ28pCiAtIChkam0pIEJ1ZyAjNTc3IC0gd3JvbmcgZmxhZyBpbiBzY2FyZC1vcGVuc2MuYyBzY19wcml2YXRlX2RlY3J5cHQuIAogICBQYXRjaCBmcm9tIGxhcnNjaEB0cnVzdGNlbnRlci5kZTsgb2sgbWFya3VzQAogLSAoZGptKSBCdWcgIzU4NDogc2NhcmQtb3BlbnNjLmMgZG9lc24ndCB3b3JrIHdpdGhvdXQgUElOLiBQYXRjaCBmcm9tIAogICBsYXJzY2hAdHJ1c3RjZW50ZXIuZGU7IG9rIG1hcmt1c0AKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8wNCAwODoyNToxOAogICAgIFtzc2hjb25uZWN0LmNdCiAgICAgZGlzYWJsZSBjaGFsbGVuZ2UvcmVzcG9uc2UgYW5kIGtleWJvYXJkLWludGVyYWN0aXZlIGF1dGggbWV0aG9kcyAKICAgICB1cG9uIGhvc3RrZXkgbWlzbWF0Y2guIGJhc2VkIG9uIHBhdGNoIGZyb20gZmN1c2FjayBBVCBmY3VzYWNrLmNvbS4gCiAgICAgYnogIzU4MDsgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8wNCAxMDoyMzo0OAogICAgIFtzc2hkLmNdCiAgICAgcmVtb3ZlIGR1cGxpY2F0ZWQgZ3JvdXAtZHJvcHBpbmcgY29kZTsgb2sgbWFya3VzQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8wNCAxMjowMzo1OQogICAgIFtzZXJ2ZXJsb29wLmNdCiAgICAgcmVtb3ZlIGJpdHJvdHRlbiBjb21tZXQ7IG9rIG1hcmt1c0AKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDYvMDQgMTI6MTg6NDkKICAgICBbc2NwLmNdCiAgICAgYW5zaWZ5OyBvayBtYXJrdXNACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzA0IDEyOjQwOjM5CiAgICAgW3NjcC5jXQogICAgIGtpbGwgc3NoIHByb2Nlc3MgdXBvbiByZWNlaXB0IG9mIHNpZ25hbCwgYnogIzI0MS4KICAgICBiYXNlZCBvbiBwYXRjaCBmcm9tIGVzYiBBVCBoYXdhaWkuZWR1OyBvayBtYXJrdXNACiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzA0IDEyOjQxOjIyCiAgICAgW3NmdHAuY10KICAgICBraWxsIHNzaCBwcm9jZXNzIG9uIHJlY2VpcHQgb2Ygc2lnbmFsOyBvayBtYXJrdXNACiAtIChkam0pIFVwZGF0ZSB0byBmaXggb2YgYnVnICM1ODQ6IGxvY2sgY2FyZCBiZWZvcmUgcmV0dXJuLiAKICAgRnJvbSBsYXJzY2hAdHJ1c3RjZW50ZXIuZGUKIC0gKGRqbSkgQWx3YXlzIHVzZSBteXNpZ25hbCgpIGZvciBTSUdBTFJNCgoyMDAzMDYwMwogLSAoZGptKSBSZXBsYWNlIHNldHByb2N0aXRsZSByZXBsYWNlbWVudCB3aXRoIGNvZGUgZGVyaXZlZCBmcm9tIAogICBVQ0Igc2VuZG1haWwKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNi8wMiAwOToxNzozNAogICAgIFthdXRoMi1ob3N0YmFzZWQuYyBhdXRoLmMgYXV0aC1vcHRpb25zLmMgYXV0aC1yaG9zdHMuYyBhdXRoLXJoLXJzYS5jXQogICAgIFtjYW5vaG9zdC5jIG1vbml0b3IuYyBzZXJ2Y29uZi5jIHNlcnZjb25mLmggc2Vzc2lvbi5jIHNzaGRfY29uZmlnXQogICAgIFtzc2hkX2NvbmZpZy41XQogICAgIGRlcHJlY2F0ZSBWZXJpZnlSZXZlcnNlTWFwcGluZyBzaW5jZSBpdCdzIGRhbmdlcm91cyBpZiBjb21iaW5lZAogICAgIHdpdGggSVAgYmFzZWQgYWNjZXNzIGNvbnRyb2wgYXMgbm90ZWQgYnkgTWlrZSBIYXJkaW5nOyByZXBsYWNlIHdpdGgKICAgICBhIFVzZUROUyBvcHRpb24sIFVzZUROUyBpcyBvbiBieSBkZWZhdWx0IGFuZCBpbmNsdWRlcyB0aGUKICAgICBWZXJpZnlSZXZlcnNlTWFwcGluZyBjaGVjazsgd2l0aCBpdG9qdW5ALCBwcm92b3NALCBqYWtvYkAgYW5kIGRlcmFhZHRACiAgICAgb2sgZGVyYWFkdEAsIGRqbUAKICAgLSBtaWxsZXJ0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzAzIDAyOjU2OjE2CiAgICAgW3NjcC5jXQogICAgIFJlbW92ZSB0aGUgYWR2ZXJ0aXNpbmcgY2xhdXNlIGluIHRoZSBVQ0IgbGljZW5zZSB3aGljaCBCZXJrZWxleQogICAgIHJlc2NpbmRlZCAyMiBKdWx5IDE5OTkuICBQcm9vZmVkIGJ5IG15c2VsZiBhbmQgVGhlby4KIC0gKGRqbSkgRml4IHBvcnRhYmxlLXNwZWNpZmljIHVzZXMgb2YgdmVyaWZ5X3JldmVyc2VfbWFwcGluZyB0b28KIC0gKGRqbSkgU3luYyBvcGVuYnNkLWNvbXBhdCB3aXRoIE9wZW5CU0QgQ1ZTLiAKICAgIC0gTm8gbW9yZSA0LXRlcm0gQlNEIGxpY2Vuc2VzIGluIGxpbmtlZCBjb2RlCiAtIChkdHVja2VyKSBbcG9ydC1haXguYyBic2QtY3JheS5jXSBGaXggdXNlcyBvZiB2ZXJpZnlfcmV2ZXJzZV9tYXBwaW5nLgoKMjAwMzA2MDIKIC0gKGRqbSkgRml4IHNlZ3YgZnJvbSBiYWQgcmVvcmRlcmluZyBpbiBhdXRoLXBhbS5jCiAtIChkam0pIEFsd2F5cyB1c2Ugc2F2ZWRfYXJndiBpbiBzc2hkLmMgYXMgY29tcGF0X2luaXRfc2V0cHJvY3RpdGxlIG1heSAKICAgY2xvYmJlcgogLSAodGltKSBvcGVuYnNkLWNvbXBhdC94bW1hcC5bY2hdIExpY2Vuc2UgY2xhcmlmaWNhdGlvbnMuIEFkZCBtaXNzaW5nCiAgIENWUyBJRC4KIC0gKGRqbSkgUmVtb3ZlICJub2lwNiIgb3B0aW9uIGZyb20gUmVkSGF0IHNwZWMgZmlsZS4gVGhpcyBtYXkgbm93IGJlIAogICBzZXQgYXQgcnVudGltZSB1c2luZyBBZGRyZXNzRmFtaWx5IG9wdGlvbi4KIC0gKGRqbSkgRml4IHVzZSBvZiBtYWNybyBiZWZvcmUgI2RlZmluZSBpbiBjaXBoZXItYWVzLmMKIC0gKGRqbSkgU3luYyBsaWNlbnNlIG9uIG9wZW5ic2QtY29tcGF0L2JpbmRyZXN2cG9ydC5jIHdpdGggT3BlbkJTRCBDVlMKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8yNiAxMjo1NDo0MAogICAgIFtzc2hjb25uZWN0LmNdCiAgICAgZml4IGZvcm1hdCBzdHJpbmdzOyBvayBtYXJrdXNACiAgIC0gZGVyYWFkdEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8yOSAxNjo1ODo0NQogICAgIFtzc2hkLmMgdWlkc3dhcC5jXQogICAgIHNldGV1aWQgYW5kIHNldGVnaWQ7IG1hcmt1cyBvawogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA2LzAyIDA4OjMxOjEwCiAgICAgW3NzaF9jb25maWcuNV0KICAgICBWZXJpZnlIb3N0S2V5RE5TIGlzIHYyIG9ubHkuIG9rIG1hcmt1c0AKCjIwMDMwNTMwCiAtIChkdHVja2VyKSBBZGQgbWlzc2luZyBzZW1pY29sb24gaW4gbWQ1Y3J5cHQuYywgcGF0Y2ggZnJvbSBvcGVuc3NoIGF0CiAgIHJvdW1lbnBldHJvdi5pbmZvCiAtIChkdHVja2VyKSBEZWZpbmUgU1NIRF9BQ1FVSVJFU19DVFRZIGZvciBOQ1IgTVAtUkFTIGFuZCBSZWxpYW50IFVuaXguCgoyMDAzMDUyNgogLSAoZGptKSBBdm9pZCBhdXRoMi1jaGFsbC5jIHdhcm5pbmcgd2hlbiBjb21waWxpbmcgd2l0aG91dCAKICAgUEFNLCBCU0RfQVVUSCBhbmQgU0tFWQoKMjAwMzA1MjUKLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gZGptQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzI0IDA5OjAyOjIyCiAgICAgW2xvZy5jXQogICAgIHBhc3MgbG9nZ2VkIGRhdGEgdGhyb3VnaCBzdHJudmlzOyBvayBtYXJrdXMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMjQgMDk6MzA6NDAKICAgICBbYXV0aGZpbGUuYyBtb25pdG9yLmMgc2Z0cC1jb21tb24uYyBzc2hwdHkuY10KICAgICBjYXN0IHNvbWUgdHlwZXMgZm9yIHByaW50aW5nOyBvayBtYXJrdXNACgoyMDAzMDUyNAogLSAoZHR1Y2tlcikgQ29ycmVjdCAtLW9zZnNpYSBpbiBJTlNUQUxMLiAgUGF0Y2ggYnkgc2tlbGV0ZW4gYXQgc2hpbGxlc3QubmV0CgoyMDAzMDUyMwogLSAoZGptKSBVc2UgVklTX1NBRkUgb24gbG9nZ2VkIHN0cmluZ3MgcmF0aGVyIHRoYW4gZGVmYXVsdCBzdHJudmlzIAogICBlbmNvZGluZyAod2hpY2ggZW5jb2RlcyBtYW55IG1vcmUgY2hhcmFjdGVycykKIC0gT3BlbkJTRCBDVlMgU3luYwogICAtIGptY0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8yMCAxMjowMzozNQogICAgIFtzZnRwLjFdCiAgICAgLSBuZXcgc2VudGVuY2UsIG5ldyBsaW5lCiAgICAgLSBhZGRlZCAuWHIncwogICAgIC0gdHlwb3MKICAgICBvayBkam1ACiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzIwIDEyOjA5OjMxCiAgICAgW3NzaC4xIHNzaF9jb25maWcuNSBzc2hkLjggc3NoZF9jb25maWcuNSBzc2gta2V5Z2VuLjFdCiAgICAgbmV3IHNlbnRlbmNlLCBuZXcgbGluZQogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8yMyAwODoyOTozMAogICAgIFtzc2hjb25uZWN0LmNdCiAgICAgZml4IGxlYWs7IG9rIG1hcmt1c0AKCjIwMDMwNTIwCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE4IDIzOjIyOjAxCiAgICAgW2xvZy5jXQogICAgIHVzZSBzeXNsb2dfcigpIGluIGEgc2lnbmFsIGhhbmRsZXIgY2FsbGVkIHBsYWNlOyBtYXJrdXMgb2sKIC0gKGRqbSkgQ29uZmlndXJlIGxvZ2ljIHRvIGRldGVjdCBzeXNsb2dfciBhbmQgZnJpZW5kcwoKMjAwMzA1MTkKIC0gKGRqbSkgU3luYyBhdXRoLXBhbS5oIHdpdGggd2hhdCB3ZSBhY3R1YWxseSBpbXBsZW1lbnQKCjIwMDMwNTE4CiAtIChkam0pIFJldHVybiBvZiB0aGUgZHJlYWRlZCBQQU1fVFRZX0tMVURHRSwgd2hpY2ggd2VudCBtaXNzaW5nIGluIAogICByZWNlbnQgbWVyZ2UKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNiAwMzoyNzoxMgogICAgIFtyZWFkY29uZi5jIHNzaF9jb25maWcgc3NoX2NvbmZpZy41IHNzaC1rZXlzaWduLmNdCiAgICAgYWRkIEFkZHJlc3NGYW1pbHkgb3B0aW9uIHRvIHNzaF9jb25maWcgKGxpa2UgLTQsIC02IG9uIGNvbW1hbmRsaW5lKS4KICAgICBQb3J0YWJsZSBidWcgIzUzNDsgb2sgbWFya3VzQAogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNyAwMzoyNTo1OAogICAgIFthdXRoLXJob3N0cy5jXQogICAgIGp1c3QgaW4gY2FzZSwgcHV0IG51bWJlcnMgdG8gc3NjYW5mICVzIGFyZy4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTcgMDQ6Mjc6NTIKICAgICBbY2lwaGVyLmMgY2lwaGVyLWN0ci5jIG15cHJvcG9zYWwuaF0KICAgICBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgYWVzLWN0ciBtb2RlcyBmcm9tCiAgICAgaHR0cDovL3d3dy5pZXRmLm9yZy9pbnRlcm5ldC1kcmFmdHMvZHJhZnQtaWV0Zi1zZWNzaC1uZXdtb2Rlcy0wMC50eHQKICAgICBvayBkam1ACiAtIChkam0pIFJlbW92ZSBJUHY0IGJ5IGRlZmF1bHQgaGFjayBub3cgdGhhdCB3ZSBjYW4gc3BlY2lmeSBBRiBpbiBjb25maWcKIC0gKGRqbSkgVGlkeSBhbmQgdHJpbSBUT0RPCiAtIChkam0pIFN5bmMgb3BlbmJzZC1jb21wYXQvIHdpdGggT3BlbkJTRCBDVlMgaGVhZAogLSAoZGptKSBCaWcgS05GIG9uIG9wZW5ic2QtY29tcGF0LwogLSAoZGptKSBLTkYgb24gbWQ1Y3J5cHQuW2NoXQogLSAoZGptKSBLTkYgb24gYXV0aC1zaWEuW2NoXQoKMjAwMzA1MTcKIC0gKGJhbCkgc3RyY2F0IC0+IHN0cmxjYXQgb24gb3BlbmJzZC1jb21wYXQvcmVhbHBhdGguYyAocmV2IDEuOCBPcGVuQlNEKQoKMjAwMzA1MTYKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAxMzo1MjoxMAogICAgIFtzc2guY10KICAgICBNYWtlICJzc2ggLVYiIHByaW50IHRoZSBPcGVuU1NMIHZlcnNpb24gaW4gYSBodW1hbiByZWFkYWJsZSBmb3JtLiBQYXRjaAogICAgIGZyb20gQ3JhaWcgTGVyZXMgKG1pbmRyb3QgYXQgZWUubGJsLmdvdik7IG9rIG1hcmt1c0AKICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAxNDowMjo0NwogICAgIFtyZWFkY29uZi5jIHNlcnZjb25mLmNdCiAgICAgd2FybiBmb3IgdW5zdXBwb3J0ZWQgY29uZmlnIG9wdGlvbi4gb2sgbWFya3VzQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAxNDowOToyMQogICAgIFthdXRoMi1rcmI1LmNdCiAgICAgZml4IDY0Yml0IGlzc3VlOyByZXBvcnQgaXRvanVuQAogICAtIGRqbUBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAxNDo1NToyNQogICAgIFtyZWFkY29uZi5jIHJlYWRjb25mLmggc3NoX2NvbmZpZyBzc2hfY29uZmlnLjUgc3NoY29ubmVjdC5jXQogICAgIGFkZCBhIENvbm5lY3RUaW1lb3V0IG9wdGlvbiB0byBzc2gsIGJhc2VkIG9uIHBhdGNoIGZyb20KICAgICBKZWFuLUNoYXJsZXMgTG9uZ3VldCAoamNsb25ndWV0IGF0IGZyZWUuZnIpOyBwb3J0YWJsZSAjMjA3IG9rIG1hcmt1c0AKIC0gKGRqbSkgQWRkIHdhcm5pbmcgZm9yIFVzZVBBTSB3aGVuIGJ1aWx0IHdpdGhvdXQgUEFNIHN1cHBvcnQKIC0gKGRqbSkgQSBmZXcgdHlwZSBtaXNtYXRjaCBmaXhlcyBmcm9tIEJ1ZyAjNTY1CiAtIChkam0pIEd1YXJkIGZyZWVfcGFtX2Vudmlyb25tZW50IGFnYWluc3QgTlVMTCBhcmd1bWVudC4gV29ya3MgYXJvdW5kCiAgIEhQL1VYIFBBTSBwcm9ibGVtcyBkZWJ1Z2dlZCBieSBkdHVja2VyCgoyMDAzMDUxNQogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE0IDEzOjExOjU2CiAgICAgW3NzaC1hZ2VudC4xXQogICAgIHNldHVwIC0+IHNldCB1cDsKICAgICBmcm9tIHdpekBuZXRic2QKICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNCAxODoxNjoyMAogICAgIFtrZXkuYyBrZXkuaCByZWFkY29uZi5jIHJlYWRjb25mLmggc3NoX2NvbmZpZy41IHNzaGNvbm5lY3QuY10KICAgICBbZG5zLmMgZG5zLmggUkVBRE1FLmRucyBzc2gta2V5Z2VuLjEgc3NoLWtleWdlbi5jXQogICAgIGFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgdmVyaWZ5aW5nIGhvcyBrZXlzIHVzaW5nIEROUyBhcyBkZXNjcmliZWQKICAgICBpbiBkcmFmdC1pZXRmLXNlY3NoLWRucy14eC50eHQuIG1vcmUgaW5mb3JtYXRpb24gaW4gUkVBRE1FLmRucy4KICAgICBvayBtYXJrdXNAIGFuZCBoZW5uaW5nQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNCAyMjoyNDo0MgogICAgIFtjbGllbnRsb29wLmMgc2Vzc2lvbi5jIHNzaC4xXQogICAgIGFsbG93IHRvIHNlbmQgYSBCUkVBSyB0byB0aGUgcmVtb3RlIHN5c3RlbTsgb2sgdmFyaW91cwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAwMDoyODoyOAogICAgIFtzc2hjb25uZWN0Mi5jXQogICAgIGNsZWFudXAgdW5yZWdpc3RlciBvZiBwZXItbWV0aG9kIHBhY2tldCBoYW5kbGVyczsgb2sgZGptQAogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE1IDAxOjQ4OjEwCiAgICAgW3JlYWRjb25mLmMgcmVhZGNvbmYuaCBzZXJ2Y29uZi5jIHNlcnZjb25mLmhdCiAgICAgYWx3YXlzIHBhcnNlIGtlcmJlcm9zIG9wdGlvbnMuIG9rIGRqbUAgbWFya3VzQAogICAtIGpha29iQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA1LzE1IDAyOjI3OjE1CiAgICAgW2Rucy5jXQogICAgIGFkZCBtaXNzaW5nIGZyZWVycnNldAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAwMzowODoyOQogICAgIFtjaXBoZXIuYyBjaXBoZXItYmYxLmMgY2lwaGVyLWFlcy5jIGNpcGhlci0zZGVzMS5jXQogICAgIHNwbGl0IG91dCBjdXN0b20gRVZQIGNpcGhlcnMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMDM6MTA6NTIKICAgICBbc3NoLWtleWdlbi5jXQogICAgIGF2b2lkIHdhcm5pbmc7IG9rIGpha29iQAogICAtIG1vdXJpbmdAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMDM6Mzk6MDcKICAgICBbc2Z0cC1pbnQuY10KICAgICBNYWtlIHB1dC9nZXQgKGdsb2JlZCBhbmQgbm9uZ2xvYmVkKSBjb2RlIG1vcmUgY29uc2lzdGFudC4gT0sgZGptQAogICAtIG1vdXJpbmdAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMDM6NDM6NTkKICAgICBbc2Z0cC1pbnQuYyBzZnRwLmNdCiAgICAgVGVhY2ggbHMgaG93IHRvIGRpc3BsYXkgbXVsdGlwbGUgY29sdW1uIGRpc3BsYXkgYW5kIGFsbG93IHVzZXJzIAogICAgIHRvIHJldHVybiB0byBzaW5nbGUgY29sdW1uIGZvcm1hdCB2aWEgJ2xzIC0xJy4gIE9LIEBkam0KICAgLSBqYWtvYkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNSAwNDowODo0NAogICAgIFtyZWFkY29uZi5jIHNlcnZjb25mLmNdCiAgICAgZGlzYWJsZSBrZXJiZXJvcyB3aGVuIG5vdCBzdXBwb3J0ZWQuIG9rIG1hcmt1c0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTUgMDQ6MDg6NDEKICAgICBbc3NoLjFdCiAgICAgfkIgaXMgc3NoMiBvbmx5CiAtIChkam0pIEFsd2F5cyBwYXJzZSBVc2VQQU0KIC0gKGRqbSkgQ29uZmlndXJlIGdsdWUgZm9yIEROUyBzdXBwb3J0IChjb2RlIGRvZXNuJ3Qgd29yayBpbiBwb3J0YWJsZSB5ZXQpCiAtIChkam0pIEltcG9ydCBnZXRycnNldGJ5bmFtZSgpIGZ1bmN0aW9uIGZyb20gT3BlbkJTRCBsaWJjIChmb3IgRE5TIHN1cHBvcnQpCiAtIChkam0pIFRpZHkgTWFrZWZpbGUgY2xlYW4gdGFyZ2V0cwogLSAoZGptKSBBZGFwdCBSRUFETUUuZG5zIGZvciBwb3J0YWJsZQogLSAoZGptKSBBdm9pZCB1dWVuY29kZS5jIHdhcm5pbmdzCiAtIChkam0pIEVuYWJsZSBVc2VQQU0gd2hlbiBidWlsdCAtLXdpdGgtcGFtCiAtIChkam0pIE9ubHkgYnVpbGQgZ2V0cnJzZXRieW5hbWUgcmVwbGFjZW1lbnQgd2hlbiB1c2luZyAtLXdpdGgtZG5zCiAtIChkam0pIEJ1ZyAjNTI5OiBzc2hkIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgYWZ0ZXIgU0lHSFVQIChjb3B5IGFyZ3YgCiAgICAgICAgIGNvcnJlY3RseSkKIC0gKGRqbSkgQnVnICM0NDQ6IFdyb25nIHBhdGhzIGFmdGVyIHJlY29uZmlndXJlCiAtIChkdHVja2VyKSBIUC1VWCBuZWVkcyB0byBpbmNsdWRlIDxzeXMvc3RydGlvLmg+IGZvciBUSU9DU0JSSwoKMjAwMzA1MTQKIC0gKGRqbSkgQnVnICMxMTc6IERvbid0IGxpZSB0byBQQU0gYWJvdXQgdXNlcm5hbWUKIC0gKGRqbSkgUkNTSUQgc3luYyB3LyBPcGVuQlNECiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDkgMTI6MDA6MzcKICAgICBbcmVhZGNvbmYuY10KICAgICBzdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gY29uZmlnIGxpbmVzIGJlZm9yZSBwYXJzaW5nLiAKICAgICBGaXhlcyBieiA1Mjg7IG9rIG1hcmt1c0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMTIgMTA6MTM6NTcKICAgICBbY2lwaGVyLmNdCiAgICAgaGlkZSBjaXBoZXIgZGV0YWlsczsgb2sgZGptQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8xMiAxMDoxNTozNgogICAgIFttaXNjLmNdCiAgICAgZGVidWctPmRlYnVnMgogICAtIG5hZGR5QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzEyIDExOjQwOjE1CiAgICAgW3NzaC4xXQogICAgIGRvY3VtZW50IC1WIHN3aXRjaCwgZml4IHdvcmRpbmc7IG9rIG1hcmt1c0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMTQgMTQ6MTc6NTAKICAgICBbY2hhbm5lbHMuYyBzc2hjb25uZWN0LmMgc3NoZC5jIHNzaC1rZXlzY2FuLmNdCiAgICAgYXZvaWQgaGFyZGNvZGVkIFNPQ0tfeHg7IHdpdGggaXRvanVuQDsgc2hvdWxkIGFsbG93IHNzaCBvdmVyIFNDVFAKICAgLSBtb3VyaW5nQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzE0IDIxOjMxOjI3CiAgICAgW3NmdHAtaW50LmNdCiAgICAgTWlzc2luZyBnbG9iZnJlZSgmZykgaW4gcHJvY2Vzc19wdXQoKSBzcG90dGVkIGJ5IFZpbmNlIEJyaW1oYWxsCiAgICAgPFZCcmltaGFsbEBub3ZlbGwuY29tPi4gIG9rQCBUaGVvCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzE2IDE0OjM1OjI3CiAgICAgW2F1dGguaF0KICAgICBkb2N1bWVudCBzdHJ1Y3QgQXV0aGN0eHQ7IHdpdGggc29sYXIKICAgLSBkZXJhYWR0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzI2IDA0OjI5OjQ5CiAgICAgW3NzaC1rZXlzY2FuLmNdCiAgICAgLXQgaW4gdXNhZ2UoKTsgcm9naWVyQHF1YWFrLm9yZwogICAtIG1vdXJpbmdAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMzAgMDE6MTY6MjAKICAgICBbc3NoZC44IHNzaGRfY29uZmlnLjVdCiAgICAgRXNjYXBlID8sICogYW5kICEgaW4gLlFsIGZvciBucm9mZiBjb21wYXRpYmlsaXR5LiAgT3BlblNTSCBQb3J0YWJsZSAKICAgICBCdWcgIzU1MCBhbmQgKiBlc2NhcGluZyBzdWdnZXN0ZWQgYnkgam1jQC4KICAgLSBkYXZpZEBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8zMCAyMDo0MTowNwogICAgIFtzc2hkLjhdCiAgICAgZml4IGludmFsaWQgLlBmIG1hY3JvIHVzYWdlIGludHJvZHVjZWQgaW4gcHJldmlvdXMgY29tbWl0CiAgICAgb2sgam1jQCBtb3VyaW5nQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xMSAxNjo1Njo0OAogICAgIFthdXRoZmlsZS5jIHNzaC1rZXlnZW4uY10KICAgICBjaGFuZ2Uga2V5X2xvYWRfcHVibGljIHRvIHRyeSB0byByZWFkIGEgcHVibGljIGZyb206CiAgICAgcnNhMSBwcml2YXRlIG9yIHJzYTEgcHVibGljIGFuZCBzc2gyIGtleXMuCiAgICAgdGhpcyBtYWtlcyBzc2gta2V5Z2VuIC1lIGZhaWwgZm9yIHNzaDEga2V5cyBtb3JlIGdyYWNlZnVsbHkKICAgICBmb3IgZXhhbXBsZTsgcmVwb3J0IGZyb20gaXRvanVuIChuZXRic2QgcHIgMjA1NTApLgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xMSAyMDozMDoyNQogICAgIFtjaGFubmVscy5jIGNsaWVudGxvb3AuYyBzZXJ2ZXJsb29wLmMgc2Vzc2lvbi5jIHNzaC5jXQogICAgIG1ha2UgY2hhbm5lbF9uZXcoKSBzdHJkdXAgdGhlICdyZW1vdGVfbmFtZScgKG5vdCB0aGUgY2FsbGVyKTsgb2sgdGhlbwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xMiAxNjo1NTozNwogICAgIFtzc2hjb25uZWN0Mi5jXQogICAgIGZvciBwdWJrZXkgYXV0aGVudGljYXRpb24gdHJ5IHRoZSB1c2VyIGtleXMgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKICAgICAgICAxLiBhZ2VudCBrZXlzIHRoYXQgYXJlIGZvdW5kIGluIHRoZSBjb25maWcgZmlsZQogICAgICAgIDIuIG90aGVyIGFnZW50IGtleXMKICAgICAgICAzLiBrZXlzIHRoYXQgYXJlIG9ubHkgbGlzdGVkIGluIHRoZSBjb25maWcgZmlsZQogICAgIHRoaXMgaGVscHMgd2hlbiBhbiBhZ2VudCBoYXMgbWFueSBrZXlzLCB3aGVyZSB0aGUgc2VydmVyIG1pZ2h0CiAgICAgY2xvc2UgdGhlIGNvbm5lY3Rpb24gYmVmb3JlIHRoZSBjb3JyZWN0IGtleSBpcyB1c2VkLiByZXBvcnQgJiBvayBwYkAKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTIgMTg6MzU6MTgKICAgICBbc3NoLWtleXNjYW4uMV0KICAgICB0eXBvOiBEU0Ega2V5cyBhcmUgb2YgdHlwZSBzc2gtZHNzOyBCcmlhbiBQb29sZQogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNCAwMDo1Mjo1OQogICAgIFtzc2gyLmhdCiAgICAgcmFuZ2VzIGZvciBwZXIgYXV0aCBtZXRob2QgbWVzc2FnZXMKICAgLSBkam1AY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTQgMDE6MDA6NDQKICAgICBbc2Z0cC4xXQogICAgIGVtcGhhc2lzZSB0aGUgYmF0Y2htb2RlIGZ1bmN0aW9uYWxpdHkgYW5kIG1ha2UgcmVmZXJlbmNlIHRvIHB1YmtleSBhdXRoLAogICAgIGJvdGggb2Ygd2hpY2ggYXJlIEZBUXM7IG9rIG1hcmt1c0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTQgMDI6MTU6NDcKICAgICBbYXV0aDIuYyBtb25pdG9yLmMgc3NoY29ubmVjdDIuYyBhdXRoMi1rcmI1LmNdCiAgICAgaW1wbGVtZW50IGtlcmJlcm9zIG92ZXIgc3NoMiAoImtlcmJlcm9zLTJAc3NoLmNvbSIpOyB0ZXN0ZWQgd2l0aCBqYWtvYkAKICAgICBzZXJ2ZXIgaW50ZXJvcHMgd2l0aCBjb21tZXJjaWFsIGNsaWVudDsgb2sgamFrb2JAIGRqbUAKICAgLSBqbWNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDUvMTQgMDg6MjU6MzkKICAgICBbc2Z0cC4xXQogICAgIC0gYmV0dGVyIGZvcm1hdHRpbmcgaW4gU1lOT1BTSVMKICAgICAtIHdoaXRlc3BhY2UgYXQgRU9MCiAgICAgb2sgZGptQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNS8xNCAwODo1Nzo0OQogICAgIFttb25pdG9yLmNdCiAgICAgaHR0cDovL2J1Z3ppbGxhLm1pbmRyb3Qub3JnL3Nob3dfYnVnLmNnaT9pZD01NjAKICAgICBQcml2c2VwIGNoaWxkIGNvbnRpbnVlcyB0byBydW4gYWZ0ZXIgbW9uaXRvciBraWxsZWQuCiAgICAgUGFzcyBtb25pdG9yIHNpZ25hbHMgdGhyb3VnaCB0byBjaGlsZDsgRGFycmVuIFR1Y2tlcgogLSAoZGptKSBNYWtlIHBvcnRhYmxlIGJ1aWxkIHdpdGggTUlUIGtyYjUgKHNvbWUgaXNzdWVzIHJlbWFpbikKIC0gKGRqbSkgQWRkIG5ldyBVc2VQQU0gY29uZmlndXJhdGlvbiBkaXJlY3RpdmUgdG8gYWxsb3cgcnVudGltZSBjb250cm9sCiAgIG92ZXIgdXNhZ2Ugb2YgUEFNLiBUaGlzIGFsbG93cyBub24tcm9vdCB1c2Ugb2Ygc3NoZCB3aGVuIGJ1aWx0IHdpdGgKICAgLS13aXRoLXBhbQogLSAoZGptKSBEaWUgc2NyZWFtaW5nIGlmIHN0YXJ0X3BhbSgpIGlzIGNhbGxlZCB3aGVuIFVzZVBBTT1ubwogLSAoZGptKSBBdm9pZCBLcmJWIGxlYWsgZm9yIE1JVCBLZXJiZXJvcwogLSAoZHR1Y2tlcikgU2V0IGFpX3NvY2t0eXBlIGFuZCBhaV9wcm90b2NvbCBpbiBmYWtlLWdldGFkZHJpbmZvLmMuIG9rIGRqbUAKIC0gKGRqbSkgQnVnICMyNTg6IHNzY2FuZigiWzAtOV0iKSAtPiBzc2NhbmYoIlswMTIzNDU2Nzg5XSIpIGZvciBwb3J0YWJpbGl0eQoKMjAwMzA1MTIKIC0gKGRqbSkgUmVkaGF0IHNwZWM6IERvbid0IGluc3RhbGwgcHJvZmlsZS5kIHNjcmlwdHMgd2hlbiBub3QgCiAgIGJ1aWxkaW5nIHdpdGggR05PTUUvR1RLIGFza3Bhc3MgKHBhdGNoIGZyb20gYmV0QHJhaHVsLm5ldCkKCjIwMDMwNTEwCiAtIChkdHVja2VyKSBCdWcgIzMxODogQ3JlYXRlIHNzaF9wcm5nX2NtZHMub3V0IGR1cmluZyAibWFrZSIgcmF0aGVyIHRoYW4KICAgIm1ha2UgaW5zdGFsbCIuICBQYXRjaCBieSByb3RoQGZlZXAubmV0LgogLSAoZHR1Y2tlcikgQnVnICM1MzY6IFRlc3QgZm9yIGFuZCB3b3JrIGFyb3VuZCBvcGVucHR5L2NvbnRyb2xsaW5nIHR0eQogICBwcm9ibGVtIG9uIExpbnV4IChmaXhlcyAiY291bGQgbm90IHNldCBjb250cm9sbGluZyB0dHkiIGVycm9ycykuCiAtIChkam0pIE1lcmdlIEZyZWVCU0QgUEFNIGNvZGU6IHJlcGxhY2VzIFBBTSBwYXNzd29yZCBhdXRoIGtsdWRnZSB3aXRoIAogICBwcm9wZXIgY2hhbGxlbmdlLXJlc3BvbnNlIG1vZHVsZQogLSAoZGptKSAyLWNsYXVzZSBsaWNlbnNlIG9uIGxvZ2lucmVjLmMsIHdpdGggcGVybWlzc2lvbiBmcm9tCiAgIGFuZHJlQGFlLTM1LmNvbQoKMjAwMzA1MDQKIC0gKGR0dWNrZXIpIEJ1ZyAjNDk3OiBNb3ZlICNpbmNsdWRlIG9mIGJzZC1jeWd3aW5fdXRpbC5oIHRvIG9wZW5ic2QtY29tcGF0LmguCiAgIFBhdGNoIGZyb20gdmluc2NoZW5AcmVkaGF0LmNvbS4KCjIwMDMwNTAzCiAtIChkdHVja2VyKSBBZGQgbWlzc2luZyAidm9pZCIgdG8gcmVjb3JkX2ZhaWxlZF9sb2dpbiBpbiBic2QtY3JheS5jLiAgTm90ZWQKICAgYnkgd2VuZHlwQGNyYXkuY29tLgoKMjAwMzA1MDIKIC0gKGR0dWNrZXIpIEJ1ZyAjNTQ0OiBpZ25vcmUgaW52YWxpZCBjbXNnX3R5cGUgb24gTGludXggMi4wIGtlcm5lbHMsCiAgIHByaXZzZXAgc2hvdWxkIG5vdyB3b3JrLgogLSAoZHR1Y2tlcikgTW92ZSBoYW5kbGluZyBvZiBiYWQgcGFzc3dvcmQgYXV0aGVudGljYXRpb25zIGludG8gYSBwbGF0Zm9ybQogICBzcGVjaWZpYyByZWNvcmRfZmFpbGVkX2xvZ2luKCkgZnVuY3Rpb24gKGFmZmVjdHMgQUlYICYgVW5pY29zKS4gb2sgbW91cmluZ0AKCjIwMDMwNDI5CiAtIChkam0pIEFkZCBiYWNrIHJhZGl4Lm8gKHVzZWQgYnkgQUZTIHN1cHBvcnQpLCBhZnRlciBpdCB3ZW50IG1pc3NpbmcgZnJvbQogICBNYWtlZmlsZSBtYW55IG1vb25zIGFnbwogLSAoZGptKSBBcHBseSAib3dsLWFsd2F5cy1hdXRoIiBwYXRjaCBmcm9tIE9wZW53YWxsL1NvbGFyIERlc2lnbmVyCiAtIChkam0pIEZpeCBibGlicGF0aCBzcGVjaWZpY2F0aW9uIGZvciBBSVgvZ2NjCiAtIChkam0pIFNvbWUgc3lzdGVtcyBoYXZlIGJhc2VuYW1lIGluIC1sZ2VuLiBGaXggZnJvbSBheWFtdXJhQGF5YW11cmEub3JnCgoyMDAzMDQyOAogLSAoYmFsKSBbZGVmaW5lcy5oIHByb2dyZXNzbWV0ZXIuYyBzY3AuY10gU29tZSBtb3JlIGN1bGxpbmcgb2Ygbm9uIDY0Yml0IAogICBoYWNrZWQgY29kZS4KCjIwMDMwNDI3CiAtIChiYWwpIEJ1ZyAjNTQxOiByZXR1cm47IHdhcyBkcm9wcGVkIGJ5IG1pc3Rha2UuICBSZXBvcnRlZCBieSAKICAgZnVycmllckBpZ2xvdS5jb20KIC0gKGJhbCkgU2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBwbGF0Zm9ybXMgbGFja2luZyB1X2ludF82NC4gIFdlIG1heQogICBhcyB3ZWxsIGNsZWFuIG91dCBzb21lIG9mIHRob3NlIGV2aWwgI2lmZGVmcwogLSAoYmFsKSBhdXRoMS5jIG1pbm9yIHJlc3luYyB3aGlsZSBsb29raW5nIGF0IHRoZSBjb2RlLgogLSAoYmFsKSBhdXRoMi5jIHNhbWUgY2hhbmdlZCBhcyBhYm92ZS4KCjIwMDMwNDA5CiAtIChkam0pIEJ1ZyAjNTM5OiBTcGVjaWZ5IGNyZWF0aW9uIG1vZGUgd2l0aCBPX0NSRUFUIGZvciBsYXN0bG9nLiBSZXBvcnQgCiAgIGZyb20gbWF0dGhAZWVjcy5iZXJrZWxleS5lZHUKIC0gKGRqbSkgTWFrZSB0aGUgc3BlYyB3b3JrIHdpdGggUmVkaGF0IDkuMCAod2hpY2ggcmVuYW1lcyBzaGFydXRpbHMpCiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDIgMDk6NDg6MDcKICAgICBbY2xpZW50bG9vcC5jIG1vbml0b3IuYyBtb25pdG9yX3dyYXAuYyBwYWNrZXQuYyBwYWNrZXQuaCByZWFkY29uZi5jXQogICAgIFtyZWFkY29uZi5oIHNlcnZlcmxvb3AuYyBzc2hjb25uZWN0Mi5jXQogICAgIHJlYXBwbHkgcmVrZXlpbmcgY2hhZ2UsIHRlc3RlZCBieSBoZW5uaW5nQCwgb2sgZGptQAogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wMiAxNDozNjoyNgogICAgIFtzc2gta2V5c2lnbi5jXQogICAgIHBvdGVudGlhbCBzZWdmYXVsdCBpZiBLRVlfVU5TUEVDOyBjandhdHNvbkBkZWJpYW4ub3JnOyBidWcgIzUyNgogICAtIGl0b2p1bkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wMyAwNzoyNToyNwogICAgIFtwcm9ncmVzc21ldGVyLmNdCiAgICAgJE9wZW5CU0QkCiAgIC0gaXRvanVuQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzAzIDEwOjE3OjM1CiAgICAgW3Byb2dyZXNzbWV0ZXIuY10KICAgICByZW1vdmUgJE9wZW5CU0QkLCBhcyBvdGhlciAqLmMgZG9lcyBub3QgaGF2ZSBpdC4KICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDcgMDg6Mjk6NTcKICAgICBbbW9uaXRvcl93cmFwLmNdCiAgICAgdHlwbzogZ2V0IGNvcnJlY3QgY291bnRlcnM7IGludHJvZHVjZWQgZHVyaW5nIHJla2V5aW5nIGNoYW5nZS4KICAgLSBtaWxsZXJ0QGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzA3IDIxOjU4OjA1CiAgICAgW3Byb2dyZXNzbWV0ZXIuY10KICAgICBUaGUgVUNCIGNvcHlyaWdodCBoZXJlIGlzIGluY29ycmVjdC4gIFRoaXMgY29kZSBkaWQgbm90IG9yaWdpbmF0ZQogICAgIGF0IFVDQiwgaXQgd2FzIHdyaXR0ZW4gYnkgTHVrZSBNZXdidXJuLiAgVXBkYXRlZCB0aGUgY29weXJpZ2h0IGF0CiAgICAgdGhlIGF1dGhvcidzIHJlcXVlc3QuICBtYXJrdXNAIE9LCiAgIC0gaXRvanVuQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzA4IDIwOjIxOjI5CiAgICAgWyouYyAqLmhdCiAgICAgcmVuYW1lIGxvZygpIGludG8gbG9naXQoKSB0byBhdm9pZCBuYW1lIGNvbmZsaWN0LiAgbWFya3VzIG9rLCBmcm9tCiAgICAgbmV0YnNkCiAgICAgLSAoZGptKSBYWFggLSBQZXJmb3JtZWQgbG9jYWxseSB1c2luZzoKICAgICAgICJwZXJsIC1wIC1pIC1lICdzLyhcc3xeKWxvZ1woLyQxbG9naXRcKC9nJyAqLmMgKi5oIgogICAtIGhpbkBjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wOSAwODoyMzo1MgogICAgIFtzZXJ2Y29uZi5jXQogICAgIERvbid0IGluY2x1ZGUgPGtyYi5oPiB3aGVuIGNvbXBpbGluZyB3aXRoIEtlcmJlcm9zIDUgc3VwcG9ydAogICAtIChkam0pIEZpeCB1cCBtaXNzaW5nIGluY2x1ZGUgZm9yIHBhY2tldC5jCiAgIC0gKGRqbSkgRml4IG1pc3NlZCBsb2cgPT4gbG9naXQgb2NjdXJhbmNlIChyZWZlcmVuY2UgYnkgZnVuY3Rpb24gcG9pbnRlcikKCjIwMDMwNDAyCiAtIChiYWwpIGlmIElQX1RPUyBpcyBub3QgZm91bmQgb3IgYnJva2VuIGRvbid0IHRyeSB0byBjb21waWxlIGluCiAgIHBhY2tldF9zZXRfdG9zKCkgZnVuY3Rpb24gY2FsbC4gIGJ1ZyAjNTI3CgoyMDAzMDQwMQogLSAoZGptKSBPcGVuQlNEIENWUyBTeW5jCiAgIC0gam1jQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzAzLzI4IDEwOjExOjQzCiAgICAgW3NjcC4xIHNmdHAuMSBzc2guMSBzc2gtYWRkLjEgc3NoLWFnZW50LjEgc3NoX2NvbmZpZy41IHNzaGRfY29uZmlnLjVdCiAgICAgW3NzaC1rZXlnZW4uMSBzc2gta2V5c2Nhbi4xIHNzaC1rZXlzaWduLjhdCiAgICAgLSBraWxsZWQgd2hpdGVzcGFjZQogICAgIC0gbmV3IHNlbnRlbmNlIG5ldyBsaW5lCiAgICAgLSAuQmsgZm9yIGFyZ3VtZW50cwogICAgIG9rIG1hcmt1c0AKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDQvMDEgMTA6MTA6MjMKICAgICBbY2xpZW50bG9vcC5jIG1vbml0b3IuYyBtb25pdG9yX3dyYXAuYyBwYWNrZXQuYyBwYWNrZXQuaCByZWFkY29uZi5jXQogICAgIFtyZWFkY29uZi5oIHNlcnZlcmxvb3AuYyBzc2hjb25uZWN0Mi5jXQogICAgIHJla2V5aW5nIGJ1Z2ZpeGVzIGFuZCBhdXRvbWF0aWMgcmVrZXlpbmc6CiAgICAgKiBib3RoIGNsaWVudCBhbmQgc2VydmVyIHJla2V5IF9hdXRvbWF0aWNhbGx5XwogICAgICAgICAgIChhKSBhZnRlciAyXjMxIHBhY2tldHMsIGJlY2F1c2UgYWZ0ZXIgMl4zMiBwYWNrZXRzCiAgICAgICAgICAgICAgIHRoZSBzZXF1ZW5jZSBudW1iZXIgZm9yIHBhY2tldHMgd3JhcHMKICAgICAgICAgICAoYikgYWZ0ZXIgMl4oYmxvY2tzaXplX2luX2JpdHMvNCkgYmxvY2tzCiAgICAgICAoc2VlOiBkcmFmdC1pZXRmLXNlY3NoLW5ld21vZGVzLTAwLnR4dCkKICAgICAgIChhKSBhbmQgKGIpIGFyZSBfZW5hYmxlZF8gYnkgZGVmYXVsdCwgYW5kIG9ubHkgZGlzYWJsZWQgZm9yIGtub3duCiAgICAgICBvcGVuc3NoIHZlcnNpb25zLCB0aGF0IGRvbid0IHN1cHBvcnQgcmVrZXlpbmcgcHJvcGVybHkuCiAgICAgKiBjbGllbnQgb3B0aW9uICdSZWtleUxpbWl0JwogICAgICogZG8gbm90IHJlcGx5IHRvIHJlcXVlc3RzIGR1cmluZyByZWtleWluZwogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wMSAxMDoyMjoyMQogICAgIFtjbGllbnRsb29wLmMgbW9uaXRvci5jIG1vbml0b3Jfd3JhcC5jIHBhY2tldC5jIHBhY2tldC5oIHJlYWRjb25mLmNdCiAgICAgW3JlYWRjb25mLmggc2VydmVybG9vcC5jIHNzaGNvbm5lY3QyLmNdCiAgICAgYmFja291dCByZWtleWluZyBjaGFuZ2VzIChmb3IgMy42LjEpCiAgIC0gbWFya3VzQGN2cy5vcGVuYnNkLm9yZyAyMDAzLzA0LzAxIDEwOjMxOjI2CiAgICAgW2NvbXBhdC5jIGNvbXBhdC5oIGtleC5jXQogICAgIGJ1Z2ZpeCBjYXVzZXMgc3RhbGxlZCBjb25uZWN0aW9ucyBmb3Igc3NoLmNvbSA8IDMuMDsgbm90aWNlZCBieSBob0A7IAogICAgIHRlc3RlZCBieSBob0AgYW5kIG15c2VsZgogICAtIG1hcmt1c0BjdnMub3BlbmJzZC5vcmcgMjAwMy8wNC8wMSAxMDo1Njo0NgogICAgIFt2ZXJzaW9uLmhdCiAgICAgMy42LjEKIC0gKGRqbSkgQ3Jhbmsgc3BlYyBmaWxlIHZlcnNpb25zCiAtIChkam0pIFJlbGVhc2UgMy42LjFwMQoKMjAwMzAzMjYKIC0gKGRqbSkgT3BlbkJTRCBDVlMgU3luYwogICAtIGRlcmFhZHRAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDMvMjYgMDQ6MDI6NTEKICAgICBbc2Z0cC1zZXJ2ZXIuY10KICAgICBvbmUgbGFzdCBmaXggdG8gdGhlIHRyZWU6IHJhY2UgZml4IGJyb2tlIHN0dWZmOyBwciAzMTY5OyAKICAgICBzcnBAc3JwYXJpc2gubmV0LCBoZWxwIGZyb20gZGptCgoyMDAzMDMyNQogLSAoZGptKSBGaXggZ2V0cGVlcmlkIHN1cHBvcnQgZm9yIDY0IGJpdCBCRSBzeXN0ZW1zLiBGcm9tIAogICAgQXJuZCBCZXJnbWFubiA8YXJuZGJAZGUuaWJtLmNvbT4KCjIwMDMwMzI0CiAtIChkam0pIE9wZW5CU0QgQ1ZTIFN5bmMKICAgLSBtYXJrdXNAY3ZzLm9wZW5ic2Qub3JnIDIwMDMvMDMvMjMgMTk6MDI6MDAKICAgICBbbW9uaXRvci5jXQogICAgIHVuYnJlYWsgcmVrZXlpbmcgZm9yIHByaXZzZXA7IG9rIG1pbGxlcnRACiAtIFJlbGVhc2UgMy42cDEKIC0gRml4IHNzaGQgQmluZEFkZHJlc3MgYW5kIC1iIG9wdGlvbnMgZm9yIHN5c3RlbXMgdXNpbmcgZmFrZS1nZXRhZGRyaW5mby4KICAgUmVwb3J0IGZyb20gbXVycGxlQG11cnBsZS5uZXQsIGRpYWdub3NpcyBmcm9tIGR0dWNrZXJAemlwLmNvbS5hdQoKJElkOiBDaGFuZ2VMb2csdiAxLjMyMzQgMjAwNC8wMi8xOCAwMDoyMToxMiBkdHVja2VyIEV4cCAkCg==