TGljZW5zZToKCkNvcHlyaWdodCAoYykgMjAwOCwgSW50ZWwgQ29ycG9yYXRpb24uIApQb3J0aW9ucyAoYyksIEltYWdpbmF0aW9uIFRlY2hub2xvZ2llcywgTHRkLiAKQWxsIHJpZ2h0cyByZXNlcnZlZC4KCioqKioqKioqKioqKioqKioqKioqKioqClJlZGlzdHJpYnV0aW9uIGFuZCBVc2UKKioqKioqKioqKioqKioqKioqKioqKiogIAoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBiaW5hcnkgZm9ybSwgd2l0aG91dCBtb2RpZmljYXRpb24sIG9mIHRoZQpzb2Z0d2FyZSBjb2RlIHByb3ZpZGVkIHdpdGggdGhpcyBsaWNlbnNlICiTU29mdHdhcmU/LCBhcmUgcGVybWl0dGVkCnByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgoqIFJlZGlzdHJpYnV0aW9ucyBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcwpsaWNlbnNlIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKU29mdHdhcmUuCgoqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lIG9mIEltYWdpbmF0aW9uClRlY2hub2xvZ2llcywgTHRkIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCmZyb20gdGhlIFNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKKiBUaGUgU29mdHdhcmUgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb25uZWN0aW9uIHdpdGggdGhlIEludGVsIGhhcmR3YXJlCmRlc2lnbmVkIHRvIHVzZSB0aGUgU29mdHdhcmUgYXMgb3V0bGluZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uIE5vCm90aGVyIHVzZSBpcyBhdXRob3JpemVkLgoKKiBObyByZXZlcnNlIGVuZ2luZWVyaW5nLCBkZWNvbXBpbGF0aW9uLCBvciBkaXNhc3NlbWJseSBvZiB0aGUKU29mdHdhcmUgaXMgcGVybWl0dGVkLgoKKiBUaGUgU29mdHdhcmUgbWF5IG5vdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0ZXJtcyBkaWZmZXJlbnQgdGhhbiB0aGlzCmxpY2Vuc2UuCgoqKioqKioqKioqKioqKioqKioqKioqKgpMaW1pdGVkIFBhdGVudCBMaWNlbnNlCioqKioqKioqKioqKioqKioqKioqKioqICAKCkludGVsIENvcnBvcmF0aW9uIGdyYW50cyBhIHdvcmxkLXdpZGUsIHJveWFsdHktZnJlZSwgbm9uLWV4Y2x1c2l2ZQpsaWNlbnNlIHVuZGVyIHBhdGVudHMgaXQgbm93IG9yIGhlcmVhZnRlciBvd25zIG9yIGNvbnRyb2xzIHRvIG1ha2UsCmhhdmUgbWFkZSwgdXNlLCBpbXBvcnQsIG9mZmVyIHRvIHNlbGwgYW5kIHNlbGwgKJNVdGlsaXplPyB0aGUKU29mdHdhcmUsIGJ1dCBzb2xlbHkgdG8gdGhlIGV4dGVudCB0aGF0IGFueSBzdWNoIHBhdGVudCBpcyBuZWNlc3NhcnkKdG8gVXRpbGl6ZSB0aGUgU29mdHdhcmUgYWxvbmUuICBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvCmFueSBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgU29mdHdhcmUuICBObyBoYXJkd2FyZSBwZXIgc2UgaXMKbGljZW5zZWQgaGVyZXVuZGVyLgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKT3duZXJzaGlwIG9mIFNvZnR3YXJlIGFuZCBDb3B5cmlnaHRzCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpUaXRsZSB0byBhbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSByZW1haW5zIHdpdGggdGhlIGNvcHlyaWdodApob2xkZXJzLiBUaGUgU29mdHdhcmUgaXMgY29weXJpZ2h0ZWQgYW5kIHByb3RlY3RlZCBieSB0aGUgbGF3cyBvZiB0aGUKVW5pdGVkIFN0YXRlcyBhbmQgb3RoZXIgY291bnRyaWVzLCBhbmQgaW50ZXJuYXRpb25hbCB0cmVhdHkKcHJvdmlzaW9ucy4KCioqKioqKioqKioqCkRJU0NMQUlNRVIKKioqKioqKioqKiogIAoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwoiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVApMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKT1dORVJTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKioqCg==