IyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKIyBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGgKIyB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCiMgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKIyAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAojIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgojICRJZCQKCiMgRGVmYXVsdCBsb2NhbGl6ZWQgcmVzb3VyY2VzIGZvciBleGFtcGxlIHNlcnZsZXRzCiMgVGhpcyBsb2NhbGUgaXMgZnJfRlIKCmhlbGxvd29ybGQudGl0bGU9U2FsdXQgbGUgTW9uZGUhCgpyZXF1ZXN0aW5mby50aXRsZT1FeGVtcGxlIGQnJ2luZm9ybWF0aW9uIHN1ciBsYSByZXF16nRlCnJlcXVlc3RpbmZvLmxhYmVsLm1ldGhvZD1N6XRob2RlOgpyZXF1ZXN0aW5mby5sYWJlbC5yZXF1ZXN0dXJpPVVSSSBkZSByZXF16nRlOgpyZXF1ZXN0aW5mby5sYWJlbC5wcm90b2NvbD1Qcm90b2NvbGU6CnJlcXVlc3RpbmZvLmxhYmVsLnBhdGhpbmZvPUluZm8gZGUgY2hlbWluOgpyZXF1ZXN0aW5mby5sYWJlbC5yZW1vdGVhZGRyPUFkcmVzc2UgZGlzdGFudGU6CgpyZXF1ZXN0aGVhZGVyLnRpdGxlPUV4ZW1wbGUgZCcnaW5mb3JtYXRpb24gc3VyIGxlcyBlbnTqdGUgZGUgcmVxdep0ZQoKcmVxdWVzdHBhcmFtcy50aXRsZT1FeGVtcGxlIGRlIHJlcXXqdGUgYXZlYyBwYXJhbep0cmVzCnJlcXVlc3RwYXJhbXMucGFyYW1zLWluLXJlcT1QYXJhbep0cmVzIGRhbnMgbGEgcmVxdep0ZToKcmVxdWVzdHBhcmFtcy5uby1wYXJhbXM9UGFzIGRlIHBhcmFt6nRyZSwgbWVyY2kgZGFucyBzYWlzaXIgcXVlbHF1J3VucwpyZXF1ZXN0cGFyYW1zLmZpcnN0bmFtZT1Qculub206CnJlcXVlc3RwYXJhbXMubGFzdG5hbWU9Tm9tOgoKY29va2llcy50aXRsZT1FeGVtcGxlIGQnJ3V0aWxpc2F0aW9uIGRlIENvb2tpZXMKY29va2llcy5jb29raWVzPVZvdHJlIG5hdmlnYXRldXIgcmV0b3VybmUgbGVzIGNvb2tpZXMgc3VpdmFudDoKY29va2llcy5uby1jb29raWVzPVZvdHJlIG5hdmlnYXRldXIgbmUgcmV0b3VybmUgYXVjdW4gY29va2llCmNvb2tpZXMubWFrZS1jb29raWU9Q3LpYXRpb24gZCcndW4gY29va2llIOAgcmV0b3VybmVyIOAgdm90cmUgbmF2aWdhdGV1cgpjb29raWVzLm5hbWU9Tm9tOgpjb29raWVzLnZhbHVlPVZhbGV1cjoKY29va2llcy5zZXQ9Vm91cyB2ZW5leiBkJydlbnZveWVyIGxlIGNvb2tpZSBzdWl2YW50IOAgdm90cmUgbmF2aWdhdGV1cjoKCnNlc3Npb25zLnRpdGxlPUV4ZW1wbGUgZGUgU2Vzc2lvbnMKc2Vzc2lvbnMuaWQ9SUQgZGUgU2Vzc2lvbjoKc2Vzc2lvbnMuY3JlYXRlZD1DcullIGxlOgpzZXNzaW9ucy5sYXN0YWNjZXNzZWQ9RGVybmllciBhY2PoczoKc2Vzc2lvbnMuZGF0YT1MZXMgZG9ubullcyBleGlzdGFudGVzIGRhbnMgdm90cmUgc2Vzc2lvbjoKc2Vzc2lvbnMuYWRkZGF0YT1Bam91dGVyIGRlcyBkb25u6WVzIOAgdm90cmUgc2Vzc2lvbgpzZXNzaW9ucy5kYXRhbmFtZT1Ob20gZGUgbCcnQXR0cmlidXQgZGUgU2Vzc2lvbjoKc2Vzc2lvbnMuZGF0YXZhbHVlPVZhbGV1ciBkZSBsJydBdHRyaWJ1dCBkZSBTZXNzaW9uOgo=