dHJlZSBmNWM5NGQ2OWE0MDQwN2FlNTIyN2JjNjZlMzU0ZTYxNWQxMjM1ZWFjCnBhcmVudCA3YzI5ZjFlZGNhNDJmN2U0MjE2ODU1ZDI5NGExYTdkNWIwYmNiNTdmCmF1dGhvciBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4gMTM5ODg3NDI3MSArMDIwMApjb21taXR0ZXIgV2lsbHkgVGFycmVhdSA8d0Axd3QuZXU+IDEzOTg4ODA5MjIgKzAyMDAKZW5jb2RpbmcgbGF0aW4xCgpCVUcvTUFKT1I6IGh0dHA6IGNvbm5lY3Rpb24gc2V0dXAgbWF5IHN0YWxsIG9uIGJhbGFuY2UgdXJsX3BhcmFtCgpPbiB0aGUgbWFpbGluZyBsaXN0LCBzZXJpMDUyOEBuYXZlci5jb20gcmVwb3J0ZWQgYW4gaXNzdWUgd2hlbgp1c2luZyBiYWxhbmNlIHVybF9wYXJhbSBvciBiYWxhbmNlIHVyaS4gVGhlIHJlcXVlc3Qgd291bGQgc29tZXRpbWVzCnN0YWxsIGZvcmV2ZXIuCgpDeXJpbCBCb2506SBtYW5hZ2VkIHRvIHJlcHJvZHVjZSBpdCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGJlbG93IDoKCiAgbGlzdGVuIHRlc3QgOjgwCiAgICBtb2RlIGh0dHAKICAgIGJhbGFuY2UgdXJsX3BhcmFtIHEKICAgIGhhc2gtdHlwZSBjb25zaXN0ZW50CiAgICBzZXJ2ZXIgcyBkZW1vLjF3dC5ldTo4MAoKYW5kIGZvdW5kIGl0IGFwcGVhcmVkIHdpdGggdGhpcyBjb21taXQgOiA4MGE5MmMwICgiQlVHL01FRElVTTogaHR0cDoKZG9uJ3Qgc3RhcnQgdG8gZm9yd2FyZCByZXF1ZXN0IGRhdGEgYmVmb3JlIHRoZSBjb25uZWN0IikuCgpUaGUgYnVnIGlzIHN1YnRsZSBidXQgcmVhbC4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgSFRUUCByZXF1ZXN0CmZvcndhcmRpbmcgYW5hbHl6ZXIgcmVmcmFpbnMgZnJvbSBzdGFydGluZyB0byBwYXJzZSB0aGUgcmVxdWVzdApib2R5IHdoZW4gc29tZSBMQiBhbGdvcml0aG1zIG1pZ2h0IG5lZWQgdGhlIGJvZHkgY29udGVudHMsIGluIG9yZGVyCnRvIHByZXNlcnZlIHRoZSBkYXRhIHBvaW50ZXIgYW5kIGF2b2lkIG1vdmluZyB0aGluZ3MgYXJvdW5kIGR1cmluZwphbmFseXNpcyBpbiBjYXNlIGEgcmVkaXNwYXRjaCBpcyBsYXRlciBuZWVkZWQuIEFuZCBpbiBvcmRlciB0byBkZXRlY3QKdGhhdCB0aGUgY29ubmVjdGlvbiBlc3RhYmxpc2hlcywgaXQgd2F0Y2hlcyB0aGUgcmVzcG9uc2UgY2hhbm5lbCdzCkNGX1JFQURfQVRUQUNIRUQgZmxhZy4KClRoZSBwcm9ibGVtIGlzIHRoYXQgYSByZXF1ZXN0IGFuYWx5emVyIGlzIG5vdCBzdWJzY3JpYmVkIHRvIGEgcmVzcG9uc2UKY2hhbm5lbCwgc28gaXQgd2lsbCBvbmx5IHNlZSBjaGFuZ2VzIHdoZW4gd29rZW4gZm9yIG90aGVyIChnZW5lcmFsbHkKY29ycmVsYXRlZCkgcmVhc29ucywgc3VjaCBhcyB0aGUgZmFjdCB0aGF0IHBhcnQgb2YgdGhlIHJlcXVlc3QgY291bGQKYmUgc2VudC4gQW5kIHNpbmNlIHRoZSBDRl9SRUFEX0FUVEFDSEVEIGZsYWcgaXMgY2xlYXJlZCBvbmNlIGxlYXZpbmcKcHJvY2Vzc19zZXNzaW9uKCksIGl0IGlzIGltcG9ydGFudCBub3QgdG8gbWlzcyBpdC4gSXQgc2ltcGx5IGhhcHBlbnMKdGhhdCBzb21ldGltZXMgdGhlIHNlcnZlciBzdGFydHMgdG8gcmVzcG9uZCBpbiBhIHNlcXVlbmNlIHRoYXQgdmFsaWRhdGVzCnRoZSBjb25uZWN0aW9uIGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc19zZXNzaW9uKCksIHRoYXQgaXQgaXMgZGV0ZWN0ZWQKYWZ0ZXIgdGhlIGFuYWx5c2VycywgYW5kIHRoYXQgdGhlIG5ld2x5IGFzc2lnbmVkIENGX1JFQURfQVRUQUNIRUQgaXMKbm90IHVzZWQgdG8gZGV0ZWN0IHRoYXQgdGhlIHJlcXVlc3QgYW5hbHlzZXJzIG5lZWQgdG8gYmUgY2FsbGVkIGFnYWluLAp0aGVuIHRoZSBmbGFnIGlzIGxvc3QuCgpUaGUgQ0ZfV0FLRV9XUklURSBmbGFnIGRvZXNuJ3Qgd29yayBlaXRoZXIgYmVjYXVzZSBpdCdzIGNsZWFyZWQgdXBvbgplbnRyeSBpbnRvIHByb2Nlc3Nfc2Vzc2lvbigpLCBpZSBpZiB3ZSBzcGVuZCBtb3JlIHRoYW4gb25lIGNhbGwgbm90CmNvbm5lY3RpbmcuCgpUaHVzIHdlIG5lZWQgYSBuZXcgZmxhZyB0byB0ZWxsIHRoZSBjb25uZWN0aW9uIGluaXRpYXRvciB0aGF0IHdlIGFyZQpzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBiZWluZyBub3RpZmllZCBhYm91dCBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuClRoaXMgbmV3IGZsYWcgaXMgQ0ZfV0FLRV9DT05ORUNULiBJdCBpcyBzZXQgYnkgdGhlIHJlcXVlc3RlciwgYW5kIGlzCmNsZWFyZWQgb25jZSB0aGUgY29ubmVjdGlvbiBzdWNjZWVkcywgd2hlcmUgQ0ZfV0FLRV9PTkNFIGlzIHNldCBpbnN0ZWFkLApjYXVzaW5nIHRoZSByZXF1ZXN0IGFuYWx5c2VycyB0byBiZSBzY2FubmVkIGFnYWluLgoKRm9yIGZ1dHVyZSB2ZXJzaW9ucywgc29tZSBiZXR0ZXIgb3B0aW9ucyB3aWxsIGhhdmUgdG8gYmUgY29uc2lkZXJlZCA6CiAgLSBsZXQgYWxsIGFuYWx5c2VycyBzdWJzY3JpYmUgdG8gYm90aCByZXF1ZXN0IGFuZCByZXNwb25zZSBldmVudHMgOwogIC0gbGV0IGFuYWx5c2VycyBzdWJzY3JpYmUgdG8gc3RyZWFtIGludGVyZmFjZSBldmVudHMgKHJlZHVjZXMgbnVtYmVyCiAgICBvZiB1c2VsZXNzIGNhbGxzKQogIC0gY2hhbmdlIENGX1dBS0VfV1JJVEUncyBzZW1hbnRpY3MgdG8gcGVyc2lzdCBhY3Jvc3MgY2FsbHMgdG8KICAgIHByb2Nlc3Nfc2Vzc2lvbigpLCBidXQgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbSB2YWxpZGF0aW5nIGEKICAgIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCAoZWc6IG5vIGRhdGEgc2VudCwgb3Igbm8gZGF0YSB0byBzZW5kKQoKVGhlIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiAxLjUtZGV2MjMsIG5vIGJhY2twb3J0IGlzIG5lZWRlZC4K