Q29weXJpZ2h0IDIwMTEgVGhlIEdvIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCmxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KCmdvZG9jIG9uIGFwcGVuZ2luZQotLS0tLS0tLS0tLS0tLS0tLS0KClByZXJlcXVpc2l0ZXMKLS0tLS0tLS0tLS0tLQoKKiBHbyBhcHBlbmdpbmUgU0RLIDEuNS41IC0gMjAxMS0xMC0xMQogIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYXBwZW5naW5lL2Rvd25sb2Fkcy5odG1sI0dvb2dsZV9BcHBfRW5naW5lX1NES19mb3JfR28KCiogR28gc291cmNlcyBhdCB0aXAgdW5kZXIgJEdPUk9PVAoKCkRpcmVjdG9yeSBzdHJ1Y3R1cmUKLS0tLS0tLS0tLS0tLS0tLS0tLQoKKiBMZXQgJEFQUERJUiBiZSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGFwcCBlbmdpbmUgZmlsZXMuCiAgKGUuZy4sICRBUFBESVI9JEhPTUUvZ29kb2MtYXBwKQoKKiAkQVBQRElSIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZW50cmllcyAodGhpcyBtYXkgY2hhbmdlIGRlcGVuZGluZyBvbgogIGFwcC1lbmdpbmUgcmVsZWFzZSBhbmQgdmVyc2lvbiBvZiBnb2RvYyk6CgoJYWx0LwoJCWVuY29kaW5nL2JpbmFyeS8KCQlnby8qCgkJaW5kZXgvc3VmZml4YXJyYXkvCglhcHAueWFtbAoJZ29kb2MuemlwCglnb2RvYy8KCWluZGV4LnNwbGl0LioKCiogVGhlIGFwcC55YW1sIGZpbGUgaXMgc2V0IHVwIHBlciBhcHAgZW5naW5lIGRvY3VtZW50YXRpb24uCiAgRm9yIGluc3RhbmNlOgoKCWFwcGxpY2F0aW9uOiBnb2RvYy1hcHAKCXZlcnNpb246IDEtNS01CglydW50aW1lOiBnbwoJYXBpX3ZlcnNpb246IDMKCgloYW5kbGVyczoKCS0gdXJsOiAvLioKCSAgc2NyaXB0OiBfZ29fYXBwCgoqIFRoZSBnb2RvYy8gZGlyZWN0b3J5IGNvbnRhaW5zIGEgY29weSBvZiB0aGUgZmlsZXMgdW5kZXIgJEdPUk9PVC9zcmMvY21kL2dvZG9jCiAgd2l0aCBtb2RpZmljYXRpb25zOgoKCS0gZG9jLmdvIGlzIGV4Y2x1ZGVkIChpdCBiZWxvbmdzIHRvIHBzZXVkby1wYWNrYWdlINJkb2N1bWVudGF0aW9u0ykKCS0gbWFpbi5nbyBpcyBleGNsdWRlZCAoYXBwaW5pdC5nbyBpcyB0YWtpbmcgaXRzIHBsYWNlKQoKICBBZGRpdGlvbmFsIG1hbnVhbCBtb2RpZmljYXRpb25zIGFyZSByZXF1aXJlZCB0byByZWZlciB0byB0aGUgYWx0LyBwYWNrYWdlcwogIHdoZXJlIHRoZSBhcHAtZW5naW5lIGxpYnJhcnkgaXMgbm90IHVwLXRvLWRhdGUgd2l0aCB0aGUgZ29kb2MgdmVyc2lvbi4KCiogVGhlIGFsdC8gZGlyZWN0b3J5IGNvbnRhaW5zIHVwLXRvLWRhdGUgY29waWVzIG9mIEdvIHBhY2thZ2VzIHRoYXQgYSB0aXAtYmFzZWQKICBnb2RvYyBpcyBkZXBlbmRlbnQgb24gYnV0IHdoaWNoIGRvIG5vdCB5ZXQgZXhpc3QgaW4gdGhlIGN1cnJlbnQgYXBwLWVuZ2luZSBTREsuCiAgQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nICgxMC8xNC8yMDExKSB0aGlzIGlzIHRoZSBlbnRpcmUgZ28gZGlyZWN0b3J5IHRyZWUKICAoZm9yIHRoZSBtaXNzaW5nIEZpbGVTZXQgc2VyaWFsaXphdGlvbiBjb2RlIGluIGdvL3Rva2VuKSBhcyB3ZWxsIGFzIHRoZQogIGluZGV4L3N1ZmZpeGFycmF5IHBhY2thZ2UgKGZvciB0aGUgbWlzc2luZyBzdWZmaXggYXJyYXkgc2VyaWFsaXphdGlvbiBjb2RlKS4KICBUaGUgbGF0ZXN0IChhbHQvKWluZGV4L3N1ZmZpeGFycmF5IHBhY2thZ2UgaW50ZXJuYWxseSByZXF1aXJlcyB0aGUgbGF0ZXN0CiAgdmVyc2lvbiBvZiBlbmNvZGluZy9iaW5hcnksIHdoaWNoIGlzIHdoeSBpdCBhbHNvIG5lZWRzIHRvIGJlIHByZXNlbnQgdW5kZXIKICBhbHQvLgoKCkNvbmZpZ3VyaW5nIGFuZCBydW5uaW5nIGdvZG9jCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUbyBjb25maWd1cmUgZ29kb2MsIHJ1bgoKCWJhc2ggc2V0dXAtZ29kb2MtYXBwLmJhc2gKCnRvIGNyZWF0ZSB0aGUgZ29kb2MuemlwLCBpbmRleC5zcGxpdC4qLCBhbmQgZ29kb2MvYXBwY29uZmlnLmdvIGZpbGVzCmJhc2VkIG9uICRHT1JPT1QgYW5kICRBUFBESVIuIFNlZSB0aGUgc2NyaXB0IGZvciBkZXRhaWxzIG9uIHVzYWdlLgoKVG8gcnVuIGdvZG9jIGxvY2FsbHksIHVzaW5nIHRoZSBhcHAtZW5naW5lIGVtdWxhdG9yLCBydW4KCgk8cGF0aCB0byBnb29nbGVfYXBwZW5naW5lPi9kZXZfYXBwc2VydmVyLnB5ICRBUFBESVIKCmdvZG9jIHNob3VsZCBjb21lIHVwIGF0IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCAuCg==