Li4gQWxnb3JpdGhtcy9JbnNlcnRlcnMvL2Zyb250X2luc2VydGVyCgpmcm9udF9pbnNlcnRlcgo9PT09PT09PT09PT09PQoKU3lub3BzaXMKLS0tLS0tLS0KCi4uIHBhcnNlZC1saXRlcmFsOjoKICAgIAogICAgdGVtcGxhdGU8CiAgICAgICAgICB0eXBlbmFtZSBTZXEKICAgICAgICA+CiAgICBzdHJ1Y3QgZnJvbnRfaW5zZXJ0ZXIKICAgIHsKICAgICAgICAvLyB8dW5zcGVjaWZpZWR8CiAgICAgICAgLy8gfC4uLnwKICAgIH07CgoKRGVzY3JpcHRpb24KLS0tLS0tLS0tLS0KCkluc2VydHMgZWxlbWVudHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UuCgpIZWFkZXIKLS0tLS0tCgouLiBwYXJzZWQtbGl0ZXJhbDo6CiAgICAKICAgICNpbmNsdWRlIDxib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwPgoKTW9kZWwgb2YKLS0tLS0tLS0KCnxJbnNlcnRlcnwKCgpQYXJhbWV0ZXJzCi0tLS0tLS0tLS0KCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgUGFyYW1ldGVyICAgICB8IFJlcXVpcmVtZW50ICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCnwgYGBTZXFgYCAgICAgICB8IHxGcm9udCBFeHRlbnNpYmxlIFNlcXVlbmNlfCAgIHwgQSBzZXF1ZW5jZSB0byBiaW5kIHRoZSBpbnNlcnRlciB0by4gICB8CistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKRXhwcmVzc2lvbiBzZW1hbnRpY3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCnxTZW1hbnRpY3MgZGlzY2xhaW1lci4uLnwgfEluc2VydGVyfC4KCkZvciBhbnkgfEZyb250IEV4dGVuc2libGUgU2VxdWVuY2V8IGBgc2BgOgoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwp8IEV4cHJlc3Npb24gICAgICAgICAgICAgICAgfCBTZW1hbnRpY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKfCBgYGZyb250X2luc2VydGVyPHM+YGAgICAgIHwgQW4gfEluc2VydGVyfCBgYGluYGAsIGVxdWl2YWxlbnQgdG8gICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4uIHBhcnNlZC1saXRlcmFsOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHN0cnVjdCBpbiA6IGluc2VydGVyPHMscHVzaF9mcm9udDxfMSxfMj4gPiB7fTsgICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKCgpDb21wbGV4aXR5Ci0tLS0tLS0tLS0KCkFtb3J0aXplZCBjb25zdGFudCB0aW1lLgoKCkV4YW1wbGUKLS0tLS0tLQoKLi4gcGFyc2VkLWxpdGVyYWw6OgoKICAgIHR5cGVkZWYgcmV2ZXJzZV9jb3B5PAogICAgICAgICAgcmFuZ2VfYzxpbnQsMCw1PgogICAgICAgICwgZnJvbnRfaW5zZXJ0ZXI8IHZlY3Rvcl9jPGludCw1LDYsNyw4LDk+ID4KICAgICAgICA+Ojp0eXBlIHJhbmdlOwogICAgICAgCiAgICBCT09TVF9NUExfQVNTRVJUKCggZXF1YWw8IHJhbmdlLCByYW5nZV9jPGludCwwLDEwPiA+ICkpOwoKClNlZSBhbHNvCi0tLS0tLS0tCgp8QWxnb3JpdGhtc3wsIHxJbnNlcnRlcnwsIHxSZXZlcnNpYmxlIEFsZ29yaXRobXwsIHxbaW5zZXJ0ZXJdfCwgfGJhY2tfaW5zZXJ0ZXJ8LCB8cHVzaF9mcm9udHwKCgouLiBjb3B5cmlnaHQ6OiBDb3B5cmlnaHQgqSAgMjAwMS0yMDA5IEFsZWtzZXkgR3VydG92b3kgYW5kIERhdmlkIEFicmFoYW1zCiAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCg==