VFJBTlNMQVRJTkcgVklNIE1FU1NBR0VTCgpJbiB0aGlzIGRpcmVjdG9yeSB5b3Ugd2lsbCBmaW5kIHh4LnBvIGZpbGVzLCB3aGVyZSAieHgiIGlzIGEgbGFuZ3VhZ2UgY29kZS4KRWFjaCBmaWxlIGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvbiBvZiBFbmdsaXNoIFZpbSBtZXNzYWdlcyBmb3Igb25lIGxhbmd1YWdlLgpUaGUgZmlsZXMgYXJlIGluICJwbyIgZm9ybWF0LCB1c2VkIGJ5IHRoZSBnZXR0ZXh0IHBhY2thZ2UuICBQbGVhc2UgcmVmZXIgdG8KdGhlIGdldHRleHQgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KClRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5LCBzdGFydGluZyB3aXRoIHZlcnNpb24gMC4xMC4zNywgc3VwcG9ydHMgY29udmVydGluZwptZXNzYWdlcyBmcm9tIG9uZSBlbmNvZGluZyB0byBhbm90aGVyLiAgVGhpcyByZXF1aXJlcyB0aGF0IGl0IHdhcyBjb21waWxlZAp3aXRoIEhBVkVfSUNPTlYuICBUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIG1lc3NhZ2VzIG1heSBiZSBpbiBhbnkgZW5jb2RpbmcKc3VwcG9ydGVkIGJ5IGljb252IGFuZCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIHRoZSBjdXJyZW50bHkgdXNlZAplbmNvZGluZy4KClRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5LCBzdGFydGluZyB3aXRoIHZlcnNpb24gMC4xMC4zNiwgdXNlcyBhIG5ldyBmb3JtYXQgZm9yCnNvbWUgZW5jb2RpbmdzLiAgVGhpcyBmb2xsb3dzIHRoZSBDOTkgc3RhbmRhcmQgZm9yIHN0cmluZ3MuICBJdCBtZWFucyB0aGF0CndoZW4gYSBtdWx0aS1ieXRlIGNoYXJhY3RlciBpbmNsdWRlcyB0aGUgMHg1YyBieXRlLCB0aGlzIGlzIG5vdCByZWNvZ25pemVkIGFzCmEgYmFja3NsYXNoLiAgU2luY2UgdGhpcyBmb3JtYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggU29sYXJpcywgVmltIHVzZXMgdGhlIG9sZApmb3JtYXQuICBUaGlzIGlzIGRvbmUgYnkgc2V0dGluZyB0aGUgT0xEX1BPX0ZJTEVfT1VUUFVUIGFuZCBPTERfUE9fRklMRV9JTlBVVAplbnZpcm9ubWVudCB2YXJpYWJsZXMuICBXaGVuIHlvdSB1c2UgdGhlIE1ha2VmaWxlIGluIHRoaXMgZGlyZWN0b3J5IHRoYXQgd2lsbApiZSBkb25lIGZvciB5b3UuICBUaGlzIGRvZXMgTk9UIHdvcmsgd2l0aCBnZXR0ZXh0IDAuMTAuMzYuICBEb24ndCB1c2UgaXQsIGdldAowLjEwLjM3LgoKCk9OIE1TLVdJTkRPV1MKClRoZSBkaXN0cmlidXRlZCBmaWxlcyBhcmUgZ2VuZXJhdGVkIG9uIFVuaXgsIGJ1dCB0aGlzIHNob3VsZCBhbHNvIGJlIHBvc3NpYmxlCm9uIE1TLVdpbmRvd3MuICBEb3dubG9hZCB0aGUgZ2V0dGV4dCBwYWNrYWdlcywgZm9yIGV4YW1wbGUgZnJvbToKCglodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dldHRleHQKCllvdSBtaWdodCBoYXZlIHRvIGRvIHRoZSBjb21tYW5kcyBtYW51YWxseS4gIEV4YW1wbGU6CgogICBjZCBjOlx2aW1cdmltNzEKICAgbWtkaXIgcnVudGltZVxsYW5nXGphXExDX01FU1NBR0VTCiAgIG1zZ2ZtdCAtbyBydW50aW1lXGxhbmdcamFcTENfTUVTU0FHRVNcdmltLm1vIHNyY1xwb1xqYS5wbwoKCldIRU4gVEhFUkUgSVMgQSBNSVNUQUtFCgpJZiB5b3UgZmluZCB0aGVyZSBpcyBhIG1pc3Rha2UgaW4gb25lIG9mIHRoZSB0cmFuc2xhdGlvbnMsIHBsZWFzZSByZXBvcnQgdGhpcwp0byB0aGUgbWFpbnRhaW5lciBvZiB0aGUgdHJhbnNsYXRpb24uICBIaXMvaGVyIEUtbWFpbCBhZGRyZXNzIGlzIGluIHRoZQpjb21tZW50cyBhdCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICBZb3UgY2FuIGFsc28gc2VlIHRoaXMgd2l0aCB0aGUgIjptZXNzYWdlcyIKY29tbWFuZCBpbiBWaW0gd2hlbiB0aGUgdHJhbnNsYXRpb24gaXMgYmVpbmcgdXNlZC4KCgpDUkVBVElORyBBIE5FVyBQTyBGSUxFCgpXZSB3aWxsIHVzZSAieHgucG8iIGFzIGFuIGV4YW1wbGUgaGVyZSwgcmVwbGFjZSAieHgiIHdpdGggdGhlIG5hbWUgb2YgeW91cgpsYW5ndWFnZS4KCi0gRWRpdCBNYWtlZmlsZSB0byBhZGQgeHggdG8gTEFOR1VBR0VTIGFuZCB4eC5tbyB0byBNT0ZJTEVTLgotIENvcHkgdGhlIGhlYWRlciBvZiBhbiBleGlzdGluZyBmaWxlLCBlLmcuLCBkZS5wbywgdG8geHgucG8uICBEbyBub3QgY29weSBhbnkKICBvZiB0aGUgdHJhbnNsYXRlZCBtZXNzYWdlcywgZGVsZXRlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlICJtc2dzdHIiLgotIFRoZSByZW1haW5pbmcgd29yayBpcyBsaWtlIHVwZGF0aW5nLCBzZWUgdGhlIG5leHQgc2VjdGlvbi4KCgpVUERBVElORyBBIFBPIEZJTEUKCklmIHlvdSBhcmUgdGhlIG1haW50YWluZXIgb2YgYSAucG8gZmlsZSwgdGhpcyBpcyBob3cgeW91IHVwZGF0ZSB0aGUgZmlsZS4gIFdlCndpbGwgdXNlICJ4eC5wbyIgYXMgYW4gZXhhbXBsZSBoZXJlLCByZXBsYWNlICJ4eCIgd2l0aCB0aGUgbmFtZSBvZiB5b3VyCmxhbmd1YWdlLgoKKDEpIEFkZCBuZXcgYW5kIGNoYW5nZWQgbWVzc2FnZXMgZnJvbSB0aGUgVmltIHNvdXJjZXM6CgoJbWFrZSB4eAoKICAgIFRoaXMgd2lsbCBleHRyYWN0IGFsbCB0aGUgc3RyaW5ncyBmcm9tIFZpbSBhbmQgbWVyZ2UgdGhlbSBpbiB3aXRoIHRoZQogICAgZXhpc3RpbmcgdHJhbnNsYXRpb25zLiAgUmVxdWlyZXMgdGhlIEdOVSBnZXR0ZXh0IHV0aWxpdGllcy4gIEFsc28gcmVxdWlyZXMKICAgIHVucGFja2luZyB0aGUgZXh0cmEgYXJjaGl2ZS4KICAgIFlvdXIgb3JpZ2luYWwgeHgucG8gZmlsZSB3aWxsIGJlIGNvcGllZCB0byB4eC5wby5vcmlnCgogICAgLS0gQWZ0ZXIgeW91IGRvIHRoaXMsIHlvdSBNVVNUIGRvIHRoZSBuZXh0IHRocmVlIHN0ZXBzISAtLQoKKDIpIFRyYW5zbGF0ZQogICAgU2VlIHRoZSBnZXR0ZXh0IGRvY3VtZW50YXRpb24gb24gaG93IHRvIGRvIHRoaXMuICBZb3UgY2FuIGFsc28gZmluZAogICAgZXhhbXBsZXMgaW4gdGhlIG90aGVyIHBvIGZpbGVzLgogICAgU2VhcmNoIHRoZSBwbyBmaWxlIGZvciBpdGVtcyB0aGF0IHJlcXVpcmUgdHJhbnNsYXRpb246CgoJL2Z1enp5XHxebXNnc3RyICIiXChcbiJcKVxAIQoKICAgIFJlbW92ZSB0aGUgIiMsIGZ1enp5IiBsaW5lIGFmdGVyIGFkZGluZyB0aGUgdHJhbnNsYXRpb24uCgogICAgVGhlcmUgaXMgb25lIHNwZWNpYWwgbWVzc2FnZToKCW1zZ2lkICJNZXNzYWdlcyBtYWludGFpbmVyOiBCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPiIKICAgIFlvdSBzaG91bGQgaW5jbHVkZSB5b3VyIG5hbWUgYW5kIEUtbWFpbCBhZGRyZXNzIGluc3RlYWQsIGZvciBleGFtcGxlOgoJbXNnc3RyICJCZXJpY2h0ZW4g/GJlcnNldHp0IGJlaTogSm9obiBEb2UgPGpvaG5AZG9lLm9yZz4iCgooMykgQ2xlYW4gdXAKICAgIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQgdG8gbWFrZSBzdXJlIHRoZSB0cmFuc2xhdGlvbiB3b3JrcyBvbiBhbGwgc3lzdGVtcy4KICAgIENvbW1lbnQtb3V0IGFsbCBub24tdHJhbnNsYXRlZCBzdHJpbmdzLiAgVGhlcmUgYXJlIHR3byB0eXBlczoKICAgIC0gaXRlbXMgbWFya2VkIHdpdGggIiMsIGZ1enp5IgogICAgLSBpdGVtcyB3aXRoIGFuIGVtcHR5IG1zZ3N0cgogICAgWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNsZWFudXAudmltIHNjcmlwdDoKCgk6c291cmNlIGNsZWFudXAudmltCgogICAgQmFja2dyb3VuZDogb24gU29sYXJpcyBhbiBlbXB0eSBtc2dzdHIgcmVzdWx0cyBpbiBhbiBlbXB0eSBtZXNzYWdlOyBHTlUKICAgIGdldHRleHQgaWdub3JlcyBlbXB0eSBzdHJpbmdzIGFuZCBpdGVtcyBtYXJrZWQgd2l0aCAiIywgZnV6enkiLgoKICAgIFRoaXMgYWxzbyByZW1vdmVzIHRoZSBsaW5lIG51bWJlcnMgZnJvbSB0aGUgZmlsZSwgc28gdGhhdCBwYXRjaGVzIGFyZSBub3QKICAgIG1lc3NlZCB1cCBieSBjaGFuZ2VzIGluIGxpbmUgbnVtYmVycyBhbmQgc2hvdyB0aGUgYWN0dWFsIGNoYW5nZXMgaW4gdGhlCiAgICB0ZXh0LgoKKDQpIENoZWNrOgoKCXZpbSAtUyBjaGVjay52aW0geHgucG8KCW1ha2UgeHgubW8KCiAgICBMb29rIG91dCBmb3Igc3ludGF4IGVycm9ycyBhbmQgZml4IHRoZW0uCg==