IwojICAgUGFydHMgb2YgdGhlIGRldmVsb3BtZW50IGVmZm9ydCBmb3IgdGhpcyBwcm9qZWN0IGhhdmUgYmVlbgojICAgc3BvbnNvcmVkIGJ5IFNJRU1FTlMgQUcsIEF1c3RyaWEuIFRoYW5rcyB0byBTSUVNRU5TIGZvcgojICAgc3VwcG9ydGluZyBhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IQojCiMKIyAgIFRoaXMgaXMgYXQgbGVhc3QgYSBwYXJ0aWFsIGNyZWRpdHMtZmlsZSBvZiBpbmRpdmlkdWFsIHBlb3BsZSB0aGF0CiMgICBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoZSBVLUJvb3QgcHJvamVjdC4gSXQgaXMgc29ydGVkIGJ5IG5hbWUgYW5kCiMgICBmb3JtYXR0ZWQgdG8gYWxsb3cgZWFzeSBncmVwcGluZyBhbmQgYmVhdXRpZmljYXRpb24gYnkgc2NyaXB0cy4KIyAgIFRoZSBmaWVsZHMgYXJlOiBuYW1lIChOKSwgZW1haWwgKEUpLCB3ZWItYWRkcmVzcyAoVyksIFBHUCBrZXkgSUQKIyAgIGFuZCBmaW5nZXJwcmludCAoUCksIGRlc2NyaXB0aW9uIChEKSwgYW5kIHNuYWlsLW1haWwgYWRkcmVzcyAoUykuCiMgICBUaGFua3MsCiMKIyAgICAgICAgICAgICAgICAgICAgICAgV29sZmdhbmcgRGVuawojLS0tLS0tLS0tLQoKTjogRHIuIEJydW5vIEFjaGF1ZXIKRTogYnJ1bm9AZXhldC1hZy5kZQpEOiBTdXBwb3J0IGZvciBOZXRCU0QgKGJvdGggYXMgaG9zdCBhbmQgdGFyZ2V0IHN5c3RlbSkKCk46IFN3ZW4gQW5kZXJzb24KRTogc2FuZEBwZXBwZXJjb24uZGUKRDogRVJJQyBTdXBwb3J0CgpOOiBHdWlsbGF1bWUgQWxleGFuZHJlCkU6IGd1aWxsYXVtZS5hbGV4YW5kcmVAZ2VzcGFjLmNoCkQ6IEFkZCBQQ0lQUEM2IGNvbmZpZ3VyYXRpb24KCk46IFBpZXJyZSBBdWJlcnQKRTogPHAuYXViZXJ0QHN0YXVibGkuY29tPgpEOiBTdXBwb3J0IGZvciBSUFhDbGFzc2ljIGJvYXJkCgpOOiBBbmRyZSBCZWF1ZGluCkU6IDxhbmRyZS5iZWF1ZGluQGNvbHVicmlzLmNvbT4KRDogUENNQ0lBLCBFdGhlcm5ldCwgVEZUUAoKTjogSmVycnkgdmFuIEJhcmVuCkU6IDx2YW5iYXJlbkBjaWRlYXMuY29tPgpEOiBCZWRCdWcgcG9ydCB0byA2MDNlIGNvcmUgKE1QQzgyeHgpLiBDb2RlIGZvciBlbmhhbmNlZCBtZW1vcnkgdGVzdC4KCk46IFJhcGhhZWwgQm9zc2VrCkU6IHJhcGhhZWwuYm9zc2VrQHNvbHV0aW9uczRsaW51eC5kZQpEOiA4eHhyb20tMC4zLjAKCk46IERhdmlkIEJyb3duCkU6IERCcm93bjAzQGhhcnJpcy5jb20KRDogRXh0ZW5zaW9ucyB0byA4eHhyb20tMC4zLjAKCk46IE9saXZlciBCcm93bgpFOiBvYnJvd25AYWR2ZW50bmV0d29ya3MuY29tCkQ6IFBvcnQgdG8gdGhlIGd3ODI2MCBib2FyZAoKTjogSm9uYXRoYW4gRGUgQnJ1eW5lCkU6IGpvbmF0aGFuLmRlYnJ1eW5lQHNpZW1lbnMuYXRlYS5iZQpEOiBQb3J0IHRvIFNpZW1lbnMgSUFEMjEwIGJvYXJkCgpOOiBDb25uIENsYXJrCkU6IGNsYXJrQGVzdGVlbS5jb20KRDogRVNURUVNMTkyRSBzdXBwb3J0CgpOOiBNYWdudXMgRGFtbQpFOiBlcmFtZGFtQGtpZXJheTEucC55LmtpLmVyYS5lcmljc3Nvbi5zZQpEOiA4eHhyb20KCk46IEvhcmkgRGF27fBzc29uCkU6IGtkQGZsYWdhLmlzCkQ6IEZMQUdBIERNIFN1cHBvcnQKCk46IFdvbGZnYW5nIERlbmsKRTogd2RAZGVueC5kZQpEOiBVLUJvb3QgaW5pdGlhbCB2ZXJzaW9uLCBjb250aW51aW5nIG1haW50ZW5hbmNlLCBBUk1Cb290IG1lcmdlClc6IGh0dHA6Ly93d3cuZGVueC5kZQoKTjogRGFuIEEuIERpY2tleQpFOiBkZGlja2V5QGNoYXJ0ZXIubmV0CkQ6IEZBRFMgU3VwcG9ydAoKTjogSmFtZXMgRi4gRG91Z2hlcnR5CkU6IGpmZEBHaWdhYml0TmV0d29ya3MuQ09NCkQ6IFBvcnQgdG8gdGhlIE1PVVNTRSBib2FyZAoKTjogRGF2ZSBFbGxpcwpFOiBER0VAc2l4bmV0aW8uY29tCkQ6IEVFUFJPTSBTcGVlZHVwLCBTWE5JODU1VCBwb3J0CgpOOiBEci4gV29sZmdhbmcgR3JhbmRlZ2dlcgpFOiB3Z0BkZW54LmRlCkQ6IFN1cHBvcnQgZm9yIEludGVycGhhc2UgNDUzOSBUMS9FMS9KMSBQTUMsIFBONjIsIENDTSwgU0NNIGJvYXJkcwpXOiB3d3cuZGVueC5kZQoKTjogRnJhbmsgR290dHNjaGxpbmcKRTogZmdvdHRzY2hsaW5nQGVsdGVjLmRlCkQ6IFN1cHBvcnQgZm9yIEVMVEVDIE1IUEMvQkFCN3h4L0VMUFBDIGJvYXJkcywgY2ZiLWNvbnNvbGUsIGk4MDQyLCBTTUkgTHlueEVNClc6IHd3dy5lbHRlYy5kZQoKTjogTWFyaXVzIEdyb2VnZXIKRTogbWdyb2VnZXJAc3lzZ28uZGUKRDogTUJYIFN1cHBvcnQsIGJvYXJkIHNwZWNpZmljIGZ1bmN0aW9uIGludGVyZmFjZSwgRVNUIFNCQzgyNjAgc3VwcG9ydDsgaW5pdGlhbCBzdXBwb3J0IGZvciBTdHJvbmdBUk0gKExBUlQpLCBBUk03MjBURE1JIChpbXBsZW1lbnRhIEE3KQpXOiB3d3cuZWxpbm9zLmNvbQoKTjogS2lyayBIYWRlcmxpZQpFOiBraGFkZXJsaWVAdml2aWRpbWFnZS5jb20KRDogQWRkZWQgVEZUUCB0byA4eHhyb20gKC0+IDAuMy4xKQoKTjogQ2hyaXMgSGFsbGluYW4KRTogY2xoQG5ldDFwbHVzLmNvbQpEOiBESENQIFN1cHBvcnQKCk46IEFubmUtU29waGllIEhhcm5vaXMKRTogQW5uZS1Tb3BoaWUuSGFybm9pc0BuZXh0cmVhbS5mcgpEOiBQb3J0IHRvIFdhbG51dDQwNSBib2FyZAoKTjogQW5kcmVhcyBIZXBwZWwKRTogYWhlcHBlbEBzeXNnby5kZQpEOiBDUFUgU3VwcG9ydCBmb3IgTVBDIDc1eDsgYm9hcmQgc3VwcG9ydCBmb3IgRWx0ZWMgQkFCNzUwIFtvYnNvbGV0ZSFdCgpOOiBKb3NoIEh1YmVyCkU6IGh1YmVyQGFsdW0ud3BpLmVkdQpEOiBQb3J0IHRvIHRoZSBHYWxpbGVvIEV2YWx1YXRpb24gQm9hcmQsIGFuZCB0aGUgTVBDNzR4eCBjcHUgc2VyaWVzLgpXOiBodHRwOi8vd3d3Lm1jbHguY29tLwoKSDogU3R1YXJ0IEh1Z2hlcwpFOiBzdHVhcnRoQGxpbmVvLmNvbQpEOiBQb3J0IHRvIE1QQzgyNjBBRFMgYm9hcmQKCkg6IFJpY2ggSXJlbGFuZApFOiByLmlyZWxhbmRAY29tcHV0ZXIub3JnCkQ6IEZQR0EgZGV2aWNlIGNvbmZpZ3VyYXRpb24gZHJpdmVyCgpOOiBHYXJ5IEplbm5lam9obgpFOiBnYXJ5akBqZW5uZWpvaG4ub3JnLCBnakBkZW54LmRlCkQ6IFN1cHBvcnQgZm9yIFNhbXN1bmcgQVJNOTIwVCBTM0MyNDAwWCwgQVJNOTIwVCAiVFJBQiIKVzogd3d3LmRlbnguZGUKCk46IE11cnJheSBKZW5zZW4KRTogTXVycmF5LkplbnNlbkBjbXN0LmNzaXJvLmF1CkQ6IEluaXRpYWwgODI2MCBzdXBwb3J0OyBHREIgc3VwcG9ydApEOiBQb3J0IHRvIENvZ2VudCtIeW1vZCBib2FyZHM7IEh5bW9kIEJvYXJkIERhdGFiYXNlClc6IGh0dHA6Ly93d3cubXNhLmNtc3QuY3Npcm8uYXUvb3Vyc3RhZmYvTXVycmF5SmVuc2VuL21qai5odG1sCgpOOiBZb28uIEpvbmdob29uCkU6IHlvb3RoQGlwb25lLmNvLmtyCkQ6IEFkZGVkIHBvcnQgdG8gdGhlIFJQWGxpdGUgYm9hcmQKCk46IEJyYWQgS2VtcApFOiBCcmFkLktlbXBAc2VyYW5vYS5jb20KRDogUG9ydCB0byBXaW5kcml2ZXIgcHBtYzgyNjAgYm9hcmQKCk46IFRob21hcyBLb2VsbGVyCkU6IHRrb2VsbGVyQGdteC5uZXQKRDogUG9ydCB0byBNb3Rvcm9sYSBTYW5kcG9pbnQgMyAoTVBDODI0MCkKCk46IFRob21hcyBMYW5nZQpFOiB0aG9tYXNAY29yZWxhdHVzLmNvbQpEOiBTdXBwb3J0IGZvciBHVEggYm9hcmQ7IGxvdHMgb2YgUENNQ0lBIGZpeGVzCgpOOiBSYXltb25kIExvCkU6IGxvQHJvdXRlZnJlZS5jb20KRDogU3VwcG9ydCBmb3IgRE9TIHBhcnRpdGlvbnMKCk46IERhbiBNYWxlawpFOiBkYW5AbmV0eDQuY29tCkQ6IEZBRFNST00sIHRoZSBncmFuZGZhdGhlciBvZiBhbGwgb2YgdGhpcwoKTjogSmF5IE1vbmttYW4KRToganRtQHNtb290aHNtb290aGllLmNvbQpEOiBFU1QgU0JDODI2MCBzdXBwb3J0CgpOOiBGcmFuayBNb3JhdWYKRTogZnJhbmsubW9yYXVmQHNhbHpicmVubmVyLmNvbQpEOiBTdXBwb3J0IGZvciBFbWJlZGRlZCBQbGFuZXQgUlBYIFN1cGVyIEJvYXJkCgpOOiBEYXZpZCBN/GxsZXIKRTogZC5tdWVsbGVyQGVsc29mdC5jaApEOiBTdXBwb3J0IGZvciBTYW1zdW5nIEFSTTkyMFQgU01ESzI0MTAgZXZhbCBib2FyZAoKTjogUm9sZiBPZmZlcm1hbm5zCkU6IHJvZkBzeXNnby5kZQpEOiBJbml0aWFsIHN1cHBvcnQgZm9yIFNTVi1ETlAxMTEwLCBTTUM5MTExMSBkcml2ZXIKVzogd3d3LmVsaW5vcy5jb20KCk46IEtlaXRoIE91dHdhdGVyCkU6IEtlaXRoX091dHdhdGVyQG12aXMuY29tCkQ6IFN1cHBvcnQgZm9yIEdFTjg2MFQgYm9hcmQKCk46IEtlaXRoIE91dHdhdGVyCkU6IGtlaXRoX291dHdhdGVyQG12aXMuY29tCkQ6IFN1cHBvcnQgZm9yIGdlbmVyaWMvY3VzdG9tIE1QQzg2MFQgYm9hcmQgKEdFTjg2MFQpCgpOOiBGcmFuayBQYW5ubwpFOiBmcGFubm9AZGVscGhpbnRlY2guY29tCkQ6IFN1cHBvcnQgZm9yIEVtYmVkZGVkIFBsYW5ldCBFUDgyNjAgQm9hcmQKCk46IERlbmlzIFBldGVyCkU6IGQucGV0ZXJAbXBsLmNoCkQ6IFN1cHBvcnQgZm9yIDR4eCBTQ1NJLCBmbG9wcHksIENEUk9NLCBDVDY5MDAwIHZpZGVvLCAuLi4KRDogU3VwcG9ydCBmb3IgUElQNDA1IGJvYXJkCkQ6IFN1cHBvcnQgZm9yIE1JUDQwNSBib2FyZAoKTjogQmlsbCBQaXR0cwpFOiB3bHBAbWluZHNwcmluZy5jb20KRDogQmVkQnVnIGVtYmVkZGVkIGRlYnVnZ2VyIGNvZGUKCk46IFN0ZWZhbiBSb2VzZQpFOiBzdGVmYW4ucm9lc2VAZXNkLWVsZWN0cm9uaWNzLmNvbQpEOiBJQk0gUFBDNDAxLzQwMy80MDVHUCBTdXBwb3J0OyBXaW5kb3dzIGVudmlyb25tZW50IHN1cHBvcnQKCk46IE5laWwgUnVzc2VsbApFOiBjYXJldEBjLXNpZGUuY29tCkQ6IEF1dGhvciBvZiBMaU1vbi0xLjQuMiwgd2hpY2ggY29udHJpYnV0ZWQgc29tZSBpZGVhcwoKTjogUGFvbG8gU2NhZmZhcmRpCkU6IGFyc2VuaW9AdGluLml0CkQ6IEZBRFM4MjMgY29uZmlndXJhdGlvbiwgTVBDODIzIHZpZGVvIHN1cHBvcnQsIEkyQywgd2lyZWxlc3Mga2V5Ym9hcmQsIGxvdHMgbW9yZQoKTjogUm9iZXJ0IFNjaHdlYmVsCkU6IHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGUKRDogU3VwcG9ydCBmb3IgY3NiMjI2IGJvYXJkICh4c2NhbGUpCk46IFJvYiBUYXlsb3IKRTogcm9idEBmbHlpbmdwaWcuY29tCkQ6IFBvcnQgdG8gTUJYODYwVCBhbmQgU2FuZHBvaW50ODI0MAoKTjogRXJpayBUaGVpc2VuCkU6IGV0aGVpc2VuQG1pbmRzcHJpbmcuY29tCkQ6IE1CWDh4eCBhbmQgbWFueSBvdGhlciBwYXRjaGVzCgpOOiBKaW0gVGhvbXBzb24KRTogamltQG11c2Vua2kuY29tCkQ6IFN1cHBvcnQgZm9yIE1VU0VOS0kgYm9hcmQKCk46IERhdmlkIFVwZGVncmFmZgpFOiBkYXZlQGNyYXkuY29tCkQ6IFBvcnQgdG8gQ3JheSBMMSBib2FyZDsgREhDUCB2ZW5kb3IgZXh0ZW5zaW9ucwoKTjogQ2hyaXN0aWFuIFZlamxibwpFOiBjaHJpc3RpYW4udmVqbGJvQHRlbGxhYnMuY29tCkQ6IEZBRFM4NjBUIGV0aGVybmV0IHN1cHBvcnQKCk46IEFsZXggWnVlcGtlCkU6IGF6dUBzeXNnby5kZQpEOiBPdmVyYWxsIGltcHJvdmVtZW50cyBvbiBTdHJvbmdBUk0sIEFSTTcyMFRETUk7IFN1cHBvcnQgZm9yIFR1eHNjcmVlbjsgaW5pdGlhbCBQQ01DSUEgc3VwcG9ydCBmb3IgQVJNClc6IHd3dy5lbGlub3MuY29tCg==