IwojICAgUGFydHMgb2YgdGhlIGRldmVsb3BtZW50IGVmZm9ydCBmb3IgdGhpcyBwcm9qZWN0IGhhdmUgYmVlbgojICAgc3BvbnNvcmVkIGJ5IFNJRU1FTlMgQUcsIEF1c3RyaWEuIFRoYW5rcyB0byBTSUVNRU5TIGZvcgojICAgc3VwcG9ydGluZyBhbiBPcGVuIFNvdXJjZSBwcm9qZWN0IQojCiMKIyAgIFRoaXMgaXMgYXQgbGVhc3QgYSBwYXJ0aWFsIGNyZWRpdHMtZmlsZSBvZiBpbmRpdmlkdWFsIHBlb3BsZSB0aGF0CiMgICBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoZSBVLUJvb3QgcHJvamVjdC4gSXQgaXMgc29ydGVkIGJ5IG5hbWUgYW5kCiMgICBmb3JtYXR0ZWQgdG8gYWxsb3cgZWFzeSBncmVwcGluZyBhbmQgYmVhdXRpZmljYXRpb24gYnkgc2NyaXB0cy4KIyAgIFRoZSBmaWVsZHMgYXJlOiBuYW1lIChOKSwgZW1haWwgKEUpLCB3ZWItYWRkcmVzcyAoVyksIFBHUCBrZXkgSUQKIyAgIGFuZCBmaW5nZXJwcmludCAoUCksIGRlc2NyaXB0aW9uIChEKSwgYW5kIHNuYWlsLW1haWwgYWRkcmVzcyAoUykuCiMgICBUaGFua3MsCiMKIyAgICAgICAgICAgICAgICAgICAgICAgV29sZmdhbmcgRGVuawojLS0tLS0tLS0tLQoKTjogRHIuIEJydW5vIEFjaGF1ZXIKRTogYnJ1bm9AZXhldC1hZy5kZQpEOiBTdXBwb3J0IGZvciBOZXRCU0QgKGJvdGggYXMgaG9zdCBhbmQgdGFyZ2V0IHN5c3RlbSkKCk46IEd1aWxsYXVtZSBBbGV4YW5kcmUKRTogZ3VpbGxhdW1lLmFsZXhhbmRyZUBnZXNwYWMuY2gKRDogQWRkIFBDSVBQQzYgY29uZmlndXJhdGlvbgoKTjogU3dlbiBBbmRlcnNvbgpFOiBzYW5kQHBlcHBlcmNvbi5kZQpEOiBFUklDIFN1cHBvcnQKCk46IFBhbnRlbGlzIEFudG9uaW91CkU6IHBhbnRvQGludHJhY29tLmdyCkQ6IE5FVFZJQSBib2FyZCBzdXBwb3J0LCBBUlRPUyBzdXBwb3J0LgoKTjogUGllcnJlIEF1YmVydApFOiA8cC5hdWJlcnRAc3RhdWJsaS5jb20+CkQ6IFN1cHBvcnQgZm9yIFJQWENsYXNzaWMgYm9hcmQKCk46IEplcnJ5IHZhbiBCYXJlbgpFOiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KRDogQmVkQnVnIHBvcnQgdG8gNjAzZSBjb3JlIChNUEM4Mnh4KS4gQ29kZSBmb3IgZW5oYW5jZWQgbWVtb3J5IHRlc3QuCgpOOiBBbmRyZSBCZWF1ZGluCkU6IDxhbmRyZS5iZWF1ZGluQGNvbHVicmlzLmNvbT4KRDogUENNQ0lBLCBFdGhlcm5ldCwgVEZUUAoKTjogSm9uIEJlbmVkaWt0c3NvbgpFOiBqb25iQG1hcmVsLmlzCkQ6IFN1cHBvcnQgZm9yIE1hcmVsIFYzNyBib2FyZAoKTjogUmFwaGFlbCBCb3NzZWsKRTogcmFwaGFlbC5ib3NzZWtAc29sdXRpb25zNGxpbnV4LmRlCkQ6IDh4eHJvbS0wLjMuMAoKTjogUmljayBCcm9uc29uCkU6IHJpY2tAZWZuLm9yZwpEOiBBdG1lbCBBVDkxUk05MjAwREsgYW5kIE5BTkQgc3VwcG9ydAoKTjogRGF2aWQgQnJvd24KRTogREJyb3duMDNAaGFycmlzLmNvbQpEOiBFeHRlbnNpb25zIHRvIDh4eHJvbS0wLjMuMAoKTjogT2xpdmVyIEJyb3duCkU6IG9icm93bkBhZHZlbnRuZXR3b3Jrcy5jb20KRDogUG9ydCB0byB0aGUgZ3c4MjYwIGJvYXJkCgpOOiBKb25hdGhhbiBEZSBCcnV5bmUKRTogam9uYXRoYW4uZGVicnV5bmVAc2llbWVucy5hdGVhLmJlCkQ6IFBvcnQgdG8gU2llbWVucyBJQUQyMTAgYm9hcmQKCk46IEtlbiBDaG91CkU6IGtjaG91QGllZWUub3JnCkQ6IFN1cHBvcnQgZm9yIEEzMDAwIFNCQyBib2FyZAoKTjogQ29ubiBDbGFyawpFOiBjbGFya0Blc3RlZW0uY29tCkQ6IEVTVEVFTTE5MkUgc3VwcG9ydAoKTjogTWFnbnVzIERhbW0KRTogZGFtbUBvcGVuc291cmNlLnNlCkQ6IDh4eHJvbQoKTjogQXJ1biBEaGFyYW5rYXIKRTogQURoYXJhbmthckBBVFRCSS5Db20KRDogdGhyZWFkcyAvIHNjaGVkdWxlciBleGFtcGxlIGNvZGUKCk46IEvhcmkgRGF27fBzc29uCkU6IGtkQGZsYWdhLmlzCkQ6IEZMQUdBIERNIFN1cHBvcnQKCk46IFdvbGZnYW5nIERlbmsKRTogd2RAZGVueC5kZQpEOiBVLUJvb3QgaW5pdGlhbCB2ZXJzaW9uLCBjb250aW51aW5nIG1haW50ZW5hbmNlLCBBUk1Cb290IG1lcmdlClc6IGh0dHA6Ly93d3cuZGVueC5kZQoKTjogRGFuIEEuIERpY2tleQpFOiBkZGlja2V5QGNoYXJ0ZXIubmV0CkQ6IEZBRFMgU3VwcG9ydAoKTjogSmFtZXMgRi4gRG91Z2hlcnR5CkU6IGpmZEBHaWdhYml0TmV0d29ya3MuQ09NCkQ6IFBvcnQgdG8gdGhlIE1PVVNTRSBib2FyZAoKTjogRGF2ZSBFbGxpcwpFOiBER0VAc2l4bmV0aW8uY29tCkQ6IEVFUFJPTSBTcGVlZHVwLCBTWE5JODU1VCBwb3J0CgpOOiBEYW5pZWwgRW5nc3Ry9m0KRTogZGFuaWVsQG9taWNyb24uc2UKRDogeDg2IHBvcnQsIFN1cHBvcnQgZm9yIHNjNTIwX2NkcCBib2FyZAoKTjogRHIuIFdvbGZnYW5nIEdyYW5kZWdnZXIKRTogd2dAZGVueC5kZQpEOiBTdXBwb3J0IGZvciBJbnRlcnBoYXNlIDQ1MzkgVDEvRTEvSjEgUE1DLCBQTjYyLCBDQ00sIFNDTSBib2FyZHMKVzogd3d3LmRlbnguZGUKCk46IFBldGVyIEZpZ3VsaQpFOiBwZXBvc2hAZXRjLnNrCkQ6IFN1cHBvcnQgZm9yIFdFUCBFUDI1MCAoUFhBKSBib2FyZAoKTjogVGhvbWFzIEZyaWVkZW4KRTogVGhvbWFzRkBoeXBlcmlvbi1lbnRlcnRhaW5tZW50LmNvbQpEOiBTdXBwb3J0IGZvciBBbWlnYU9uZQoKTjogRnJhbmsgR290dHNjaGxpbmcKRTogZmdvdHRzY2hsaW5nQGVsdGVjLmRlCkQ6IFN1cHBvcnQgZm9yIEVMVEVDIE1IUEMvQkFCN3h4L0VMUFBDIGJvYXJkcywgY2ZiLWNvbnNvbGUsIGk4MDQyLCBTTUkgTHlueEVNClc6IHd3dy5lbHRlYy5kZQoKTjogTWFyaXVzIEdyb2VnZXIKRTogbWdyb2VnZXJAc3lzZ28uZGUKRDogTUJYIFN1cHBvcnQsIGJvYXJkIHNwZWNpZmljIGZ1bmN0aW9uIGludGVyZmFjZSwgRVNUIFNCQzgyNjAgc3VwcG9ydDsgaW5pdGlhbCBzdXBwb3J0IGZvciBTdHJvbmdBUk0gKExBUlQpLCBBUk03MjBURE1JIChpbXBsZW1lbnRhIEE3KQpXOiB3d3cuZWxpbm9zLmNvbQoKTjogS2lyayBIYWRlcmxpZQpFOiBraGFkZXJsaWVAdml2aWRpbWFnZS5jb20KRDogQWRkZWQgVEZUUCB0byA4eHhyb20gKC0+IDAuMy4xKQoKTjogQ2hyaXMgSGFsbGluYW4KRTogY2xoQG5ldDFwbHVzLmNvbQpEOiBESENQIFN1cHBvcnQKCk46IEFubmUtU29waGllIEhhcm5vaXMKRTogQW5uZS1Tb3BoaWUuSGFybm9pc0BuZXh0cmVhbS5mcgpEOiBQb3J0IHRvIFdhbG51dDQwNSBib2FyZAoKTjogQW5kcmVhcyBIZXBwZWwKRTogYWhlcHBlbEBzeXNnby5kZQpEOiBDUFUgU3VwcG9ydCBmb3IgTVBDIDc1eDsgYm9hcmQgc3VwcG9ydCBmb3IgRWx0ZWMgQkFCNzUwIFtvYnNvbGV0ZSFdCgpOOiBBdWd1c3QgSG9lcmFlbmRsCkU6IGF1Z3VzdC5ob2VyYW5kbEBnbXguYXQKRDogU3VwcG9ydCBmb3IgdGhlIGxvZ29kbCBib2FyZCAoUFhBMnh4KQoKTjogSm9zaCBIdWJlcgpFOiBodWJlckBhbHVtLndwaS5lZHUKRDogUG9ydCB0byB0aGUgR2FsaWxlbyBFdmFsdWF0aW9uIEJvYXJkLCBhbmQgdGhlIE1QQzc0eHggY3B1IHNlcmllcy4KVzogaHR0cDovL3d3dy5tY2x4LmNvbS8KCkg6IFN0dWFydCBIdWdoZXMKRTogc3R1YXJ0aEBsaW5lby5jb20KRDogUG9ydCB0byBNUEM4MjYwQURTIGJvYXJkCgpIOiBSaWNoIElyZWxhbmQKRTogci5pcmVsYW5kQGNvbXB1dGVyLm9yZwpEOiBGUEdBIGRldmljZSBjb25maWd1cmF0aW9uIGRyaXZlcgoKTjogR2FyeSBKZW5uZWpvaG4KRTogZ2FyeWpAamVubmVqb2huLm9yZywgZ2pAZGVueC5kZQpEOiBTdXBwb3J0IGZvciBTYW1zdW5nIEFSTTkyMFQgUzNDMjQwMFgsIEFSTTkyMFQgIlRSQUIiClc6IHd3dy5kZW54LmRlCgpOOiBNdXJyYXkgSmVuc2VuCkU6IE11cnJheS5KZW5zZW5AY21zdC5jc2lyby5hdQpEOiBJbml0aWFsIDgyNjAgc3VwcG9ydDsgR0RCIHN1cHBvcnQKRDogUG9ydCB0byBDb2dlbnQrSHltb2QgYm9hcmRzOyBIeW1vZCBCb2FyZCBEYXRhYmFzZQpXOiBodHRwOi8vd3d3Lm1zYS5jbXN0LmNzaXJvLmF1L291cnN0YWZmL011cnJheUplbnNlbi9tamouaHRtbAoKTjogWW9vLiBKb25naG9vbgpFOiB5b290aEBpcG9uZS5jby5rcgpEOiBBZGRlZCBwb3J0IHRvIHRoZSBSUFhsaXRlIGJvYXJkCgpOOiBCcmFkIEtlbXAKRTogQnJhZC5LZW1wQHNlcmFub2EuY29tCkQ6IFBvcnQgdG8gV2luZHJpdmVyIHBwbWM4MjYwIGJvYXJkCgpOOiBTYW5nbW9vbiBLaW0KRTogZG9nb2lsQGV0aW5zeXMuY29tCkQ6IFN1cHBvcnQgZm9yIGRlYnJpcyBib2FyZAoKTjogVGhvbWFzIEtvZWxsZXIKRTogdGtvZWxsZXJAZ214Lm5ldApEOiBQb3J0IHRvIE1vdG9yb2xhIFNhbmRwb2ludCAzIChNUEM4MjQwKQoKTjogUmFnaHUgS3Jpc2huYXByYXNhZApFOiBSYWdodS5LcmlzaG5hcHJhc2FkQGZjaS5jb20KRDogU3VwcG9ydCBmb3IgQWRkZXItSUkgTVBDODUyVCBldmFsdWF0aW9uIGJvYXJkClc6IGh0dHA6Ly93d3cuZm9yY2Vjb21wdXRlcnMuY29tCgpOOiBCZXJuaGFyZCBLdWhuCkU6IGJrdWhuQG1ldHJvd2Vya3MuY29tCkQgU3VwcG9ydCBmb3IgQ29sZGZpcmUgQ1BVOyBTdXBwb3J0IGZvciBNb3Rvcm9sYSBNNTI3MkMzIGFuZCBNNTI4MkVWQiBib2FyZHMKCk46IFRob21hcyBMYW5nZQpFOiB0aG9tYXNAY29yZWxhdHVzLnNlCkQ6IFN1cHBvcnQgZm9yIEdUSCBhbmQgZGJhdTF4MDAgYm9hcmRzOyBsb3RzIG9mIFBDTUNJQSBmaXhlcwoKTjogVGhlIExFT1ggdGVhbQpFOiB0ZWFtQGxlb3gub3JnCkQ6IFN1cHBvcnQgZm9yIExFT1ggYm9hcmRzLCBEUzE2NHggUlRDClc6IGh0dHA6Ly93d3cubGVveC5vcmcKCk46IFN0ZXBoYW4gTGluegpFOiBsaW56QGxpLXByby5uZXQKRDogU3VwcG9ydCBmb3IgTmlvcyBTdHJhdGl4IERldmVsb3BtZW50IEtpdCAoREstMVMxMCkKVzogaHR0cDovL3d3dy5saS1wcm8ubmV0CgpOOiBSYXltb25kIExvCkU6IGxvQHJvdXRlZnJlZS5jb20KRDogU3VwcG9ydCBmb3IgRE9TIHBhcnRpdGlvbnMKCk46IERhbiBNYWxlawpFOiBkYW5AbmV0eDQuY29tCkQ6IEZBRFNST00sIHRoZSBncmFuZGZhdGhlciBvZiBhbGwgb2YgdGhpcwoKTjogUmVpbmhhcmQgTWV5ZXIKRTogci5tZXllckBlbWstZWxla3Ryb25pay5kZQpEOiBQb3J0IHRvIEVNSyBUT1A4NjAgTW9kdWxlCgpOOiBKYXkgTW9ua21hbgpFOiBqdG1Ac21vb3Roc21vb3RoaWUuY29tCkQ6IEVTVCBTQkM4MjYwIHN1cHBvcnQKCk46IEZyYW5rIE1vcmF1ZgpFOiBmcmFuay5tb3JhdWZAc2FsemJyZW5uZXIuY29tCkQ6IFN1cHBvcnQgZm9yIEVtYmVkZGVkIFBsYW5ldCBSUFggU3VwZXIgQm9hcmQKCk46IERhdmlkIE38bGxlcgpFOiBkLm11ZWxsZXJAZWxzb2Z0LmNoCkQ6IFN1cHBvcnQgZm9yIFNhbXN1bmcgQVJNOTIwVCBTTURLMjQxMCBldmFsIGJvYXJkCgpOOiBTY290dCBNY051dHQKRTogc21jbnV0dEBwc3llbnQuY29tCkQ6IFN1cHBvcnQgZm9yIEFsdGVyYSBOaW9zLTMyIENQVSwgZm9yIE5pb3MgQ3ljbG9uZSBEZXZlbG9wbWVudCBLaXQgKERLLTFDMjApCgpOOiBSb2xmIE9mZmVybWFubnMKRTogcm9mQHN5c2dvLmRlCkQ6IEluaXRpYWwgc3VwcG9ydCBmb3IgU1NWLUROUDExMTAsIFNNQzkxMTExIGRyaXZlcgpXOiB3d3cuZWxpbm9zLmNvbQoKTjogS2VpdGggT3V0d2F0ZXIKRToga2VpdGhfb3V0d2F0ZXJAbXZpcy5jb20KRDogU3VwcG9ydCBmb3IgZ2VuZXJpYy9jdXN0b20gTVBDODYwVCBib2FyZHMgKEdFTjg2MFQsIEdFTjg2MFRfU0MpCgpOOiBGcmFuayBQYW5ubwpFOiBmcGFubm9AZGVscGhpbnRlY2guY29tCkQ6IFN1cHBvcnQgZm9yIEVtYmVkZGVkIFBsYW5ldCBFUDgyNjAgQm9hcmQKCk46IERlbmlzIFBldGVyCkU6IGQucGV0ZXJAbXBsLmNoCkQ6IFN1cHBvcnQgZm9yIDR4eCBTQ1NJLCBmbG9wcHksIENEUk9NLCBDVDY5MDAwIHZpZGVvLCAuLi4KRDogU3VwcG9ydCBmb3IgUElQNDA1IGJvYXJkCkQ6IFN1cHBvcnQgZm9yIE1JUDQwNSBib2FyZAoKTjogQmlsbCBQaXR0cwpFOiB3bHBAbWluZHNwcmluZy5jb20KRDogQmVkQnVnIGVtYmVkZGVkIGRlYnVnZ2VyIGNvZGUKCk46IFN0ZWZhbiBSb2VzZQpFOiBzdGVmYW4ucm9lc2VAZXNkLWVsZWN0cm9uaWNzLmNvbQpEOiBJQk0gUFBDNDAxLzQwMy80MDVHUCBTdXBwb3J0OyBXaW5kb3dzIGVudmlyb25tZW50IHN1cHBvcnQKCk46IEVyd2luIFJvbApFOiBlcndpbkBtdWZmaW4ub3JnCkQ6IGJvb3Qgc3VwcG9ydCBmb3IgUlRFTVMKCk46IE5laWwgUnVzc2VsbApFOiBjYXJldEBjLXNpZGUuY29tCkQ6IEF1dGhvciBvZiBMaU1vbi0xLjQuMiwgd2hpY2ggY29udHJpYnV0ZWQgc29tZSBpZGVhcwoKTjogVHJhdmlzIEIuIFNhd3llcgpFOiB0cmF2aXMuc2F3eWVyQHNhbmRidXJzdC5jb20KRDogU3VwcG9ydCBmb3IgSUJNIFBQQzQ0MEdYLCBYRVMgWFBlZGl0ZTEwMDAgNDQwR1ggUHJQTUMgYm9hcmQuCgpOOiBQYW9sbyBTY2FmZmFyZGkKRTogYXJzZW5pb0B0aW4uaXQKRDogRkFEUzgyMyBjb25maWd1cmF0aW9uLCBNUEM4MjMgdmlkZW8gc3VwcG9ydCwgSTJDLCB3aXJlbGVzcyBrZXlib2FyZCwgbG90cyBtb3JlCgpOOiBSb2JlcnQgU2Nod2ViZWwKRTogci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZQpEOiBTdXBwb3J0IGZvciBjc2IyMjYsIGxvZ29kbCBhbmQgaW5ub2tvbSBib2FyZHMgKFBYQTJ4eCkKCk46IFJvYiBUYXlsb3IKRTogcm9idEBmbHlpbmdwaWcuY29tCkQ6IFBvcnQgdG8gTUJYODYwVCBhbmQgU2FuZHBvaW50ODI0MAoKTjogRXJpayBUaGVpc2VuCkU6IGV0aGVpc2VuQG1pbmRzcHJpbmcuY29tCkQ6IE1CWDh4eCBhbmQgbWFueSBvdGhlciBwYXRjaGVzCgpOOiBKaW0gVGhvbXBzb24KRTogamltQG11c2Vua2kuY29tCkQ6IFN1cHBvcnQgZm9yIE1VU0VOS0kgYm9hcmQKCk46IFJ1bmUgVG9yZ2Vyc2VuCkU6IDxydW5ldEBpbm5vdnN5cy5jb20+CkQ6IFN1cHBvcnQgZm9yIE1vdG9yb2xhIE1QQzgyNjZBRFMgYm9hcmQKCk46IERhdmlkIFVwZGVncmFmZgpFOiBkYXZlQGNyYXkuY29tCkQ6IFBvcnQgdG8gQ3JheSBMMSBib2FyZDsgREhDUCB2ZW5kb3IgZXh0ZW5zaW9ucwoKTjogTWFydGluIFdpbmlzdG9lcmZlcgpFOiBtYXJ0aW53aW5pc3RvZXJmZXJAZ214LmNoCkQ6IFBvcnQgdG8gTVBDNTU1LzU1NiBtaWNyb2NvbnRyb2xsZXJzIGFuZCBzdXBwb3J0IGZvciBjbWkgYm9hcmQKCk46IENocmlzdGlhbiBWZWpsYm8KRTogY2hyaXN0aWFuLnZlamxib0B0ZWxsYWJzLmNvbQpEOiBGQURTODYwVCBldGhlcm5ldCBzdXBwb3J0CgpOOiBKb2huIFpoYW4KRTogemhhbnpAc2lub3ZlZS5jb20KRDogU3VwcG9ydCBmb3IgU2lub1ZlZSBNaWNyb3N5c3RlbXMgU0M4eHggU0JDCgpOOiBBbGV4IFp1ZXBrZQpFOiBhenVAc3lzZ28uZGUKRDogT3ZlcmFsbCBpbXByb3ZlbWVudHMgb24gU3Ryb25nQVJNLCBBUk03MjBURE1JOyBTdXBwb3J0IGZvciBUdXhzY3JlZW47IGluaXRpYWwgUENNQ0lBIHN1cHBvcnQgZm9yIEFSTQpXOiB3d3cuZWxpbm9zLmNvbQoKTjogWGlhbmdodWEgWGlhbwpFOiB4LnhpYW9AbW90b3JvbGEuY29tCkQ6IFN1cHBvcnQgZm9yIE1vdG9yb2xhIDg1eHgoUG93ZXJRVUlDQyBJSUkpIGNoaXAsIE1QQzg1NDBBRFMgYW5kIE1QQzg1NjBBRFMgYm9hcmRzLgo=