IyAtKi0gcnBtIC0qLQolZGVmaW5lIFJQTVZFUlNJT04gQEBSUE1WRVJTSU9OQEAKJWRlZmluZSBWRVJTSU9OICAgIEBAVkVSU0lPTkBAClN1bW1hcnk6IEtlcm5lbCBsb2FkZXIgd2hpY2ggdXNlcyBhIEZBVCwgZXh0Mi8zIG9yIGlzbzk2NjAgZmlsZXN5c3RlbSBvciBhIFBYRSBuZXR3b3JrCk5hbWU6IHN5c2xpbnV4ClZlcnNpb246ICV7UlBNVkVSU0lPTn0KUmVsZWFzZTogMQpMaWNlbnNlOiBHUEwKR3JvdXA6IFN5c3RlbS9Cb290ClNvdXJjZTA6IGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9ib290L3N5c2xpbnV4LyV7bmFtZX0tJXtWRVJTSU9OfS50YXIuZ3oKRXhjbHVzaXZlQXJjaDogaTM4NiBpNDg2IGk1ODYgaTY4NiBhdGhsb24gcGVudGl1bTQgeDg2XzY0ClBhY2thZ2VyOiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KQnVpbGRyb290OiAle190bXBwYXRofS8le25hbWV9LSV7VkVSU0lPTn0tcm9vdApCdWlsZFJlcXVpcmVzOiBuYXNtID49IDIuMDMsIHBlcmwKQXV0b3JlcTogMAolaWZhcmNoIHg4Nl82NApSZXF1aXJlczogbXRvb2xzLCBsaWJjLnNvLjYoKSg2NGJpdCkKJWRlZmluZSBteV9jYyBnY2MKJWVsc2UKUmVxdWlyZXM6IG10b29scywgbGliYy5zby42CiVkZWZpbmUgbXlfY2MgZ2NjIC1tMzIKJWVuZGlmCgojIE5PVEU6IGV4dGxpbnV4IGJlbG9uZ3MgaW4gL3NiaW4sIG5vdCBpbiAvdXNyL3NiaW4sIHNpbmNlIGl0IGlzIHR5cGljYWxseQojIGEgc3lzdGVtIGJvb3Rsb2FkZXIsIGFuZCBtYXkgYmUgbmVjZXNzYXJ5IGZvciBzeXN0ZW0gcmVjb3ZlcnkuCiVkZWZpbmUgX3NiaW5kaXIgL3NiaW4KCiVwYWNrYWdlIGRldmVsClN1bW1hcnk6IERldmVsb3BtZW50IGVudmlyb25tZW50IGZvciBTWVNMSU5VWCBhZGQtb24gbW9kdWxlcwpHcm91cDogRGV2ZWxvcG1lbnQvTGlicmFyaWVzClJlcXVpcmVzOiBzeXNsaW51eAoKJWRlc2NyaXB0aW9uClNZU0xJTlVYIGlzIGEgc3VpdGUgb2YgYm9vdGxvYWRlcnMsIGN1cnJlbnRseSBzdXBwb3J0aW5nIERPUyBGQVQKZmlsZXN5c3RlbXMsIExpbnV4IGV4dDIvZXh0MyBmaWxlc3lzdGVtcyAoRVhUTElOVVgpLCBQWEUgbmV0d29yayBib290cwooUFhFTElOVVgpLCBvciBJU08gOTY2MCBDRC1ST01zIChJU09MSU5VWCkuICBJdCBhbHNvIGluY2x1ZGVzIGEgdG9vbCwKTUVNRElTSywgd2hpY2ggbG9hZHMgbGVnYWN5IG9wZXJhdGluZyBzeXN0ZW1zIGZyb20gdGhlc2UgbWVkaWEuCgolZGVzY3JpcHRpb24gZGV2ZWwKVGhlIFNZU0xJTlVYIGJvb3QgbG9hZGVyIGNvbnRhaW5zIGFuIEFQSSwgY2FsbGVkIENPTTMyLCBmb3Igd3JpdGluZwpzb3BoaXN0aWNhdGVkIGFkZC1vbiBtb2R1bGVzLiAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBsaWJyYXJpZXMKbmVjZXNzYXJ5IHRvIGNvbXBpbGUgc3VjaCBtb2R1bGVzLgoKJXBhY2thZ2UgZXh0bGludXgKU3VtbWFyeTogVGhlIEVYVExJTlVYIGJvb3Rsb2FkZXIsIGZvciBib290aW5nIHRoZSBsb2NhbCBzeXN0ZW0uCkdyb3VwOiBTeXN0ZW0vQm9vdApSZXF1aXJlczogc3lzbGludXgKCiVkZXNjcmlwdGlvbiBleHRsaW51eApUaGUgRVhUTElOVVggYm9vdGxvYWRlciwgZm9yIGJvb3RpbmcgdGhlIGxvY2FsIHN5c3RlbSwgYXMgd2VsbCBhcyBhbGwKdGhlIFNZU0xJTlVYL1BYRUxJTlVYIG1vZHVsZXMgaW4gL2Jvb3QuCgolcGFja2FnZSB0ZnRwYm9vdApTdW1tYXJ5OiBTWVNMSU5VWCBtb2R1bGVzIGluIC90ZnRwYm9vdCwgYXZhaWxhYmxlIGZvciBuZXR3b3JrIGJvb3RpbmcKR3JvdXA6IEFwcGxpY2F0aW9ucy9JbnRlcm5ldApSZXF1aXJlczogc3lzbGludXgKCiVkZXNjcmlwdGlvbiB0ZnRwYm9vdApBbGwgdGhlIFNZU0xJTlVYL1BYRUxJTlVYIG1vZHVsZXMgZGlyZWN0bHkgYXZhaWxhYmxlIGZvciBuZXR3b3JrCmJvb3RpbmcgaW4gdGhlIC90ZnRwYm9vdCBkaXJlY3RvcnkuCgolcHJlcAolc2V0dXAgLXEgLW4gc3lzbGludXgtJXtWRVJTSU9OfQoKJWJ1aWxkCm1ha2UgQ0M9JyV7bXlfY2N9JyBjbGVhbgptYWtlIENDPScle215X2NjfScgaW5zdGFsbGVyCm1ha2UgQ0M9JyV7bXlfY2N9JyAtQyBzYW1wbGUgdGlkeQoKJWluc3RhbGwKcm0gLXJmICV7YnVpbGRyb290fQptYWtlIENDPScle215X2NjfScgaW5zdGFsbC1hbGwgXAoJSU5TVEFMTFJPT1Q9JXtidWlsZHJvb3R9IEJJTkRJUj0le19iaW5kaXJ9IFNCSU5ESVI9JXtfc2JpbmRpcn0gXAoJTElCRElSPSV7X2xpYmRpcn0gREFUQURJUj0le19kYXRhZGlyfSBcCglNQU5ESVI9JXtfbWFuZGlyfSBJTkNESVI9JXtfaW5jbHVkZWRpcn0gXAoJVEZUUEJPT1Q9L3RmdHBib290IEVYVExJTlVYRElSPS9ib290L2V4dGxpbnV4Cm1ha2UgQ0M9JyV7bXlfY2N9JyAtQyBzYW1wbGUgdGlkeQpta2RpciAtcCAle2J1aWxkcm9vdH0vZXRjCiggY2QgJXtidWlsZHJvb3R9L2V0YyAmJiBsbiAtcyAuLi9ib290L2V4dGxpbnV4L2V4dGxpbnV4LmNvbmYgLiApCgolY2xlYW4Kcm0gLXJmICV7YnVpbGRyb290fQoKJWZpbGVzCiVkZWZhdHRyKC0scm9vdCxyb290KQolZG9jIENPUFlJTkcgTkVXUyBkb2MvKgolZG9jIHNhbXBsZQole19tYW5kaXJ9L21hbiovKgole19iaW5kaXJ9LyoKJXtfZGF0YWRpcn0vc3lzbGludXgvKi5jb20KJXtfZGF0YWRpcn0vc3lzbGludXgvKi5leGUKJXtfZGF0YWRpcn0vc3lzbGludXgvKi5jMzIKJXtfZGF0YWRpcn0vc3lzbGludXgvKi5iaW4KJXtfZGF0YWRpcn0vc3lzbGludXgvKi4wCiV7X2RhdGFkaXJ9L3N5c2xpbnV4L21lbWRpc2sKJXtfZGF0YWRpcn0vc3lzbGludXgvZG9zdXRpbC8qCiV7X2RhdGFkaXJ9L3N5c2xpbnV4L2RpYWcvKgoKJWZpbGVzIGRldmVsCiV7X2RhdGFkaXJ9L3N5c2xpbnV4L2NvbTMyCgolZmlsZXMgZXh0bGludXgKJXtfc2JpbmRpcn0vZXh0bGludXgKL2Jvb3QvZXh0bGludXgKJWNvbmZpZyAvZXRjL2V4dGxpbnV4LmNvbmYKCiVmaWxlcyB0ZnRwYm9vdAovdGZ0cGJvb3QKCiVwb3N0IGV4dGxpbnV4CiMgSWYgd2UgaGF2ZSBhIC9ib290L2V4dGxpbnV4LmNvbmYgZmlsZSwgYXNzdW1lIGV4dGxpbnV4IGlzIG91ciBib290bG9hZGVyCiMgYW5kIHVwZGF0ZSBpdC4KaWYgWyAtZiAvYm9vdC9leHRsaW51eC9leHRsaW51eC5jb25mIF07IHRoZW4gXAoJZXh0bGludXggLS11cGRhdGUgL2Jvb3QvZXh0bGludXggOyBcCmVsaWYgWyAtZiAvYm9vdC9leHRsaW51eC5jb25mIF07IHRoZW4gXAoJbWtkaXIgLXAgL2Jvb3QvZXh0bGludXggJiYgXAoJbXYgL2Jvb3QvZXh0bGludXguY29uZiAvYm9vdC9leHRsaW51eC9leHRsaW51eC5jb25mICYmIFwKCWV4dGxpbnV4IC0tdXBkYXRlIC9ib290L2V4dGxpbnV4IDsgXApmaQoKJXBvc3R1bgoKJWNoYW5nZWxvZwoqIEZyaSBEZWMgMTggMjAwOSBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBSZXF1aXJlIE5BU00gMi4wMwotIFBhY2thZ2UgZG9zdXRpbAoKKiBUaHUgTWF5IDI5IDIwMDggSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gVXNlIGluc3RhbGwgdGFyZ2V0czsgY2xlYW4gdXAgdmFyaW91cyBwYXRocy4KCiogVGh1IEphbiAxMCAyMDA4IEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPgotIEFkZCBtYW4gcGFnZXMuCgoqIE1vbiBOb3YgMTkgMjAwNyBCZXJuYXJkIExpIDxiZXJuYXJkQHZhbmhwYy5vcmc+Ci0gQWRkZWQgbmV0cGJtLXByb2dzIChwcm92aWRlcyBwbmd0b3BubSkgdG8gQnVpbGRQcmVyZXEgKHRoaXMgc2hvdWxkIGJlCiAgY2hhbmdlZCB0byBCdWlsZFJlcXVpcmVzIHNpbmNlIGl0IGlzIGRlcHJlY2F0ZWQuLi4pCgoqIFRodSBNYXIgMTUgMjAwNyBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBNb3ZlIGV4dGxpbnV4IC9ib290IHN0dWZmIGludG8gL2Jvb3QvZXh0bGludXguCgoqIFRodSBKYW4gMjUgMjAwNyBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBIYWNrcyB0byBtYWtlIHRoZSAzMi1iaXQgdmVyc2lvbiBidWlsZCBjb3JyZWN0bHkgb24gNjQtYml0IG1hY2hpbmVzLgoKKiBNb24gU2VwIDE5IDIwMDYgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gQWRkIGEgc3lzbGludXgtdGZ0cGJvb3QgbW9kdWxlLgotIEZhY3RvciBleHRsaW51eCBpbnRvIGl0cyBvd24gcGFja2FnZS4KLSBNb3ZlIHRvICV7X2RhdGFkaXJ9ICgvdXNyL3NoYXJlKS4KCiogV2VkIFNlcCAyMSAyMDA1IEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPgotIElmIC9ib290L2V4dGxpbnV4LmNvbmYgZXhpc3QsIHJ1biBleHRsaW51eCAtLXVwZGF0ZS4KCiogRnJpIFNlcCAgOSAyMDA1IEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPgotIENvcHksIGRvbid0IGxpbmssICouYzMyIGludG8gL2Jvb3Q7IHJwbSBkb2Vzbid0IGxpa2UgYnJlYWtpbmcgbGlua3MuCgoqIFR1ZSBBdWcgMjMgMjAwNSBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBQdXQgKi5jMzIgaW50byAvYm9vdC4KCiogVGh1IERlYyAzMCAyMDA0IEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPgotIGxpYnN5c2xpbnV4IGRyb3BwZWQgaW4gc3lzbGludXggMy4wMC4KLSBBZGRpdGlvbmFsIGRvY3VtZW50YXRpb24uCi0gQWRkIGV4dGxpbnV4LgoKKiBUdWUgRGVjIDE0IDIwMDQgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gQWRkIGEgZGV2ZWwgcGFja2FnZSBmb3IgdGhlIGNvbTMyIGxpYnJhcnkgYWRkZWQgaW4gMi4xMi4KCiogV2VkIEFwciAxNiAyMDAzIEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPiAyLjA0LTEKLSAyLjA0IHJlbGVhc2UKLSBBZGQgc3VwcG9ydCBmb3IgbGlic3lzbGludXguc28qCi0gVGVtcGxhdGl6ZSBmb3IgaW5jbHVzaW9uIGluIENWUyB0cmVlCgoqIFRodSBBcHIgMTAgMjAwMyBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSAyLjAzIHJlbGVhc2UKLSBBZGQgc3VwcG9ydCBmb3IgbGlic3lzbGludXguYQotIEFkZCBrZXl0YWItbGlsby5wbCB0byB0aGUgL3Vzci9saWIvc3lzbGludXggZGlyZWN0b3J5Ci0gTW9kZXJuaXplIHN5bnRheAotIFN1cHBvcnQgYnVpbGRpbmcgb24geDg2LTY0CgoqIFRodSBGZWIgMTMgMjAwMyBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSAyLjAyIHJlbGVhc2U7IG5vIGxvbmdlciBzZXR1aWQKCiogVGh1IEphbiAzMCAyMDAzIEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPgotIFByZXBhcmUgZm9yIDIuMDEgcmVsZWFzZTsgbWFrZSAvdXNyL2Jpbi9zeXNsaW51eCBzZXR1aWQgcm9vdAoKKiBGcmkgT2N0IDI1IDIwMDIgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gVXBncmFkZSB0byAyLjAwLgoKKiBUdWUgQXVnIDI3IDIwMDIgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gVXBncmFkZSB0byAxLjc2LgoKKiBGcmkgSnVuIDE0IDIwMDIgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gVXBncmFkZSB0byAxLjc1LgoKKiBTYXQgSnVuICAxIDIwMDIgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gVXBncmFkZSB0byAxLjc0LgoKKiBTdW4gTWF5IDI2IDIwMDIgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gVXBncmFkZSB0byAxLjczLgoKKiBUdWUgQXByIDIzIDIwMDIgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gVXBncmFkZSB0byAxLjcyLgoKKiBXZWQgQXByIDE3IDIwMDIgSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+Ci0gVXBncmFkZSB0byAxLjcxLgotIFVwZGF0ZSB0aGUgdGl0bGUuCgoqIFdlZCBBcHIgMTcgMjAwMiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBVcGdyYWRlIHRvIDEuNzAuCgoqIFNhdCBGZWIgIDMgMjAwMiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBVcGdyYWRlIHRvIDEuNjcuCgoqIFR1ZSBKYW4gIDEgMjAwMiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBVcGdyYWRlIHRvIDEuNjYuCgoqIFNhdCBEZWMgMTUgMjAwMSBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBVcGdyYWRlIHRvIDEuNjU7IG1ha2UgYXBwcm9wcmlhdGUgY2hhbmdlcy4KCiogU2F0IEF1ZyAyNCAyMDAxIEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPgotIFVwZ3JhZGUgdG8gMS42NC4KCiogTW9uIEF1ZyAgNiAyMDAxIEguIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPgotIFVwZ3JhZGUgdG8gMS42My4KLSBVc2UgbWFrZSBpbnN0YWxsIHNpbmNlIHRoZSBzdG9jayBTWVNMSU5VWCBkaXN0cmlidXRpb24gbm93IHN1cHBvcnRzCiAgSU5TVEFMTFJPT1QuCgoqIFNhdCBBcHIgMjQgMjAwMSBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBVcGdyYWRlIHRvIDEuNjIuCgoqIFNhdCBBcHIgMTQgMjAwMSBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBGaXggbWlzc2luZyAlZmlsZXM7IGNvcnJlY3QgbW9kZXMuCgoqIEZyaSBBcHIgMTMgMjAwMSBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KLSBVcGdyYWRlIHRvIDEuNjEKLSBJbnN0YWxsIGF1eGlsaWFyeSBwcm9ncmFtcyBpbiAvdXNyL2xpYi9zeXNsaW51eAoKKiBTYXQgRmViIDEwIDIwMDEgTWF0dCBXaWxzb24gPG1zd0ByZWRoYXQuY29tPgotIDEuNTIKCiogV2VkIEphbiAyNCAyMDAxIE1hdHQgV2lsc29uIDxtc3dAcmVkaGF0LmNvbT4KLSAxLjUxcHJlNwoKKiBNb24gSmFuIDIyIDIwMDEgTWF0dCBXaWxzb24gPG1zd0ByZWRoYXQuY29tPgotIDEuNTFwcmU1CgoqIEZyaSBKYW4gMTkgMjAwMSBNYXR0IFdpbHNvbiA8bXN3QHJlZGhhdC5jb20+Ci0gMS41MXByZTMsIHdpdGggZTgyMCBkZXRlY3Rpb24KCiogVHVlIERlYyAxMiAyMDAwIFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+Ci0gcmVidWlsdCB3aXRoIGZpeGVkIGZpbGV1dGlscwoKKiBUaHUgTm92IDkgMjAwMCBUaGFuIE5nbyA8dGhhbkByZWRoYXQuY29tPgotIHVwZGF0ZSB0byAxLjQ5Ci0gdXBkYXRlIGZ0cCBzaXRlCi0gY2xlYW4gdXAgc3BlY2ZpbGUKLSBhZGQgc29tZSB1c2VmdWwgZG9jdW1lbnRzCgoqIFR1ZSBKdWwgMTggMjAwMCBOYWxpbiBEYWh5YWJoYWkgPG5hbGluQHJlZGhhdC5jb20+Ci0gYWRkICUlZGVmYXR0ciAocmVsZWFzZSA0KQoKKiBXZWQgSnVsIDEyIDIwMDAgUHJvc3BlY3RvciA8YnVnemlsbGFAcmVkaGF0LmNvbT4KLSBhdXRvbWF0aWMgcmVidWlsZAoKKiBUaHUgSnVsIDA2IDIwMDAgVHJvbmQgRWl2aW5kIEdsb21zcvhkIDx0ZWdAcmVkaGF0LmNvbT4KLSB1c2UgJSV7X3RtcHBhdGh9Ci0gY2hhbmdlIGFwcGxpY2F0aW9uIGdyb3VwIChBcHBsaWNhdGlvbnMvSW50ZXJuZXQgZG9lc24ndCBzZWVtCiAgcmlnaHQgdG8gbWUpCi0gYWRkZWQgQnVpbGRSZXF1aXJlcwoKKiBUdWUgQXByIDA0IDIwMDAgRXJpayBUcm9hbiA8ZXd0QHJlZGhhdC5jb20+Ci0gaW5pdGlhbCBwYWNrYWdpbmcK