VmVyc2lvbiAyLjIKLS0tLS0tLS0tLS0KCi0gVXBkYXRlZCB6b25laW5mbyB0byAyMDEzaAoKLSBmdXp6eV93aXRoX3Rva2VucyBwYXJzZSBhZGRvbiBmcm9tIENocmlzdG9waGVyIENvcmxleQoKLSBCdWcgd2l0aCBMQU5HPUMgZml4ZWQgYnkgTWlrZSBHaWxiZXJ0CgpWZXJzaW9uIDIuMQotLS0tLS0tLS0tLQoKLSBOZXcgbWFpbnRhaW5lcgoKLSBEYXRldXRpbCBub3cgd29ya3Mgb24gUHl0aG9uIDIuNiwgMi43IGFuZCAzLjIgZnJvbSBzYW1lIGNvZGViYXNlICh3aXRoIHNpeCkKCi0gIzcwNDA0NzogSXNtYWVsIENhcm5hbGVzJyBwYXRjaCBmb3IgYSBuZXcgdGltZSBmb3JtYXQKCi0gU21hbGwgYnVnIGZpeGVzLCB0aGFua3MgZm9yIHJlcG9ydGVycyEKCgpWZXJzaW9uIDIuMAotLS0tLS0tLS0tLQoKLSBQb3J0ZWQgdG8gUHl0aG9uIDMsIGJ5IEJyaWFuIEpvbmVzLiAgSWYgeW91IG5lZWQgZGF0ZXV0aWwgZm9yIFB5dGhvbiAyLlgsCiAgcGxlYXNlIGNvbnRpbnVlIHVzaW5nIHRoZSAxLlggc2VyaWVzLgoKLSBUaGVyZSdzIG5vIHN1Y2ggdGhpbmcgYXMgYSAiUFNGIExpY2Vuc2UiLiAgVGhpcyBzb3VyY2UgY29kZSBpcyBub3cKICBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgU2ltcGxpZmllZCBCU0QgbGljZW5zZS4gIFNlZSBMSUNFTlNFIGZvcgogIGRldGFpbHMuCgpWZXJzaW9uIDEuNQotLS0tLS0tLS0tLQoKLSBBcyByZXBvcnRlZCBieSBNYXRoaWV1IEJyaWRvbiwgcnJ1bGVzIHdlcmUgbWF0Y2hpbmcgdGhlIGJ5c2Vjb25kIHJ1bGVzCiAgaW5jb3JyZWN0bHkgYWdhaW5zdCBieW1pbnV0ZSBpbiBzb21lIGNpcmN1bXN0YW5jZXMgd2hlbiB0aGUgU0VDT05ETFkKICBmcmVxdWVuY3kgd2FzIGluIHVzZSwgZHVlIHRvIGEgY29weSAmIHBhc3RlIGJ1Zy4gIFRoZSBwcm9ibGVtIGhhcyBiZWVuCiAgdW5pdHRlc3RlZCBhbmQgY29ycmVjdGVkLgoKLSBBZGFtIFJ5YW4gcmVwb3J0ZWQgYSBwcm9ibGVtIGluIHRoZSByZWxhdGl2ZWRlbHRhIGltcGxlbWVudGF0aW9uIHdoaWNoCiAgYWZmZWN0ZWQgdGhlIHllYXJkYXkgcGFyYW1ldGVyIGluIHRoZSBtb250aCBvZiBKYW51YXJ5IHNwZWNpZmljYWxseS4KICBUaGlzIGhhcyBiZWVuIHVuaXR0ZXN0ZWQgYW5kIGZpeGVkLgoKLSBVcGRhdGVkIHRpbWV6b25lIGluZm9ybWF0aW9uLgoKClZlcnNpb24gMS40LjEKLS0tLS0tLS0tLS0tLQoKLSBVcGRhdGVkIHRpbWV6b25lIGluZm9ybWF0aW9uLgoKClZlcnNpb24gMS40Ci0tLS0tLS0tLS0tCgotIEZpeGVkIGFub3RoZXIgcGFyc2VyIHByZWNpc2lvbiBwcm9ibGVtIG9uIGNvbnZlcnNpb24gb2YgZGVjaW1hbCBzZWNvbmRzCiAgdG8gbWljcm9zZWNvbmRzLCBhcyByZXBvcnRlZCBieSBFcmlrIEJyb3duLiAgTm93IHRoZXNlIGlzc3VlcyBhcmUgZ29uZQogIGZvciByZWFsIHNpbmNlIGl0J3Mgbm90IHVzaW5nIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYW55bW9yZS4KCi0gRml4ZWQgY2FzZSB3aGVyZSB0enJhbmdlLnV0Y29mZnNldCBhbmQgdHpyYW5nZS5kc3QoKSBtaWdodCBmYWlsIGR1ZQogIHRvIGEgZGF0ZSBiZWluZyB1c2VkIHdoZXJlIGEgZGF0ZXRpbWUgd2FzIGV4cGVjdGVkIChyZXBvcnRlZCBhbmQgZml4ZWQKICBieSBMZW5uYXJ0IFJlZ2Vicm8pLgoKLSBQcmV2ZW50IHR6c3RyIGZyb20gaW50cm9kdWNpbmcgZGF5bGlnaHQgdGltaW5ncyBpbiBzdHJpbmdzIHRoYXQgZGlkbid0CiAgc3BlY2lmeSB0aGVtIChyZXBvcnRlZCBieSBMZW5uYXJ0IFJlZ2Vicm8pLgoKLSBDYWxscyBsaWtlIGdldHR6KCJHTVQrMyIpIGFuZCBnZXR0eigiVVRDLTIiKSB3aWxsIG5vdyByZXR1cm4gdGhlCiAgZXhwZWN0ZWQgdmFsdWVzLCBpbnN0ZWFkIG9mIHRoZSBUWiB2YXJpYWJsZSBiZWhhdmlvci4KCi0gRml4ZWQgRFNUIHNpZ25hbCBoYW5kbGluZyBpbiB6b25laW5mbyBmaWxlcy4gIFJlcG9ydGVkIGJ5CiAgTmljaG9sYXMgRi4gRmFicnkgYW5kIEpvaG4tTWFyayBHdXJuZXkuCgoKVmVyc2lvbiAxLjMKLS0tLS0tLS0tLS0KCi0gRml4ZWQgcHJlY2lzaW9uIHByb2JsZW0gb24gY29udmVyc2lvbiBvZiBkZWNpbWFsIHNlY29uZHMgdG8KICBtaWNyb3NlY29uZHMsIGFzIHJlcG9ydGVkIGJ5IFNraXAgTW9udGFuYXJvLgoKLSBGaXhlZCBidWcgaW4gY29uc3RydWN0b3Igb2YgcGFyc2VyLCBhbmQgY29udmVydGVkIHBhcnNlciBjbGFzc2VzIHRvCiAgbmV3LXN0eWxlIGNsYXNzZXMuICBPcmlnaW5hbCByZXBvcnQgYW5kIHBhdGNoIGJ5IE1pY2hhZWwgRWxzZPZyZmVyLgoKLSBJbml0aWFsaXplIHR6aWQgYW5kIGNvbXBzIGluIHR6LnB5LCB0byBwcmV2ZW50IHRoZSBjb2RlIGZyb20gZXZlcgogIHJhaXNpbmcgYSBOYW1lRXJyb3IgKGV2ZW4gd2l0aCBicm9rZW4gZmlsZXMpLiAgSm9oYW4gRGFobGluIHN1Z2dlc3RlZAogIHRoZSBmaXggYWZ0ZXIgYSBweWZsYWtlcyBydW4uCgotIFZlcnNpb24gaXMgbm93IHB1Ymxpc2hlZCBpbiBkYXRldXRpbC5fX3ZlcnNpb25fXywgYXMgcmVxdWVzdGVkCiAgYnkgRGFycmVuIERhbGUuCgotIEFsbCBjb2RlIGlzIGNvbXBhdGlibGUgd2l0aCBuZXctc3R5bGUgZGl2aXNpb24uCgoKVmVyc2lvbiAxLjIKLS0tLS0tLS0tLS0KCi0gTm93IHR6ZmlsZSB3aWxsIHJvdW5kIHRpbWV6b25lcyB0byBmdWxsLW1pbnV0ZXMgaWYgbmVjZXNzYXJ5LAogIHNpbmNlIFB5dGhvbidzIGRhdGV0aW1lIGRvZXNuJ3Qgc3VwcG9ydCBzdWItbWludXRlIG9mZnNldHMuCiAgVGhhbmtzIHRvIElscG8gTnl5c3P2bmVuIGZvciByZXBvcnRpbmcgdGhlIGlzc3VlLgoKLSBSZW1vdmVkIGJhcmUgc3RyaW5nIGV4Y2VwdGlvbnMsIGFzIHJlcG9ydGVkIGFuZCBmaXhlZCBieQogIFdpbGZyZWRvIFPhbmNoZXogVmVnYS4KCi0gRml4IGJ1ZyBpbiBsZWFwIGNvdW50IHBhcnNpbmcgKHJlcG9ydGVkIGFuZCBmaXhlZCBieSBFdWdlbmUgT2RlbikuCgoKVmVyc2lvbiAxLjEKLS0tLS0tLS0tLS0KCi0gRml4ZWQgcnJ1bGUgYnl5ZWFyZGF5IGhhbmRsaW5nLiBBYnJhbW8gQmFnbmFyYSBwb2ludGVkIG91dCB0aGF0CiAgUkZDMjQ0NSBhbGxvd3MgbmVnYXRpdmUgbnVtYmVycy4KCi0gRml4ZWQgLS1wcmVmaXggaGFuZGxpbmcgaW4gc2V0dXAucHkgKGJ5IFNpZG5laSBkYSBTaWx2YSkuCgotIE5vdyB0ei5nZXR0eigpIHJldHVybnMgYSB0emxvY2FsIGluc3RhbmNlIHdoZW4gbm90IGdpdmVuIGFueQogIGFyZ3VtZW50cyBhbmQgbm8gb3RoZXIgdGltZXpvbmUgaW5mb3JtYXRpb24gaXMgZm91bmQuCgotIFVwZGF0aW5nIHRpbWV6b25lIGluZm9ybWF0aW9uIHRvIHZlcnNpb24gMjAwNXEuCgoKVmVyc2lvbiAxLjAKLS0tLS0tLS0tLS0KCi0gRml4ZWQgcGFyc2luZyBvZiBYWGhYWG0gZm9ybWF0dGVkIHRpbWUgYWZ0ZXIgZGF5L21vbnRoL3llYXIKICBoYXMgYmVlbiBwYXJzZWQuCgotIEFkZGVkIHBhdGNoIGJ5IEplZmZyZXkgSGFycmlzIG9wdGltaXppbmcgcnJ1bGUuX19jb250YWluc19fLgoKClZlcnNpb24gMC45Ci0tLS0tLS0tLS0tCgotIEZpeGVkIHBpY2tsaW5nIG9mIHRpbWV6b25lIHR5cGVzLCBhcyByZXBvcnRlZCBieQogIEFuZHJlYXMgS/ZobGVyLgoKLSBJbXBsZW1lbnRlZCBpbnRlcm5hbCB0aW1lem9uZSBpbmZvcm1hdGlvbiB3aXRoIGJpbmFyeQogIHRpbWV6b25lIGZpbGVzIFsxXS4gZGF0YXV0aWwudHouZ2V0dHooKSBmdW5jdGlvbiB3aWxsIG5vdwogIHRyeSB0byB1c2UgdGhlIHN5c3RlbSB0aW1lem9uZSBmaWxlcywgYW5kIGZhbGxiYWNrIHRvCiAgdGhlIGludGVybmFsIHZlcnNpb25zLiBJdCdzIGFsc28gcG9zc2libGUgdG8gYXNrIGZvcgogIHRoZSBpbnRlcm5hbCB2ZXJzaW9ucyBkaXJlY3RseSBieSB1c2luZwogIGRhdGV1dGlsLnpvbmVpbmZvLmdldHR6KCkuCgotIE5ldyB0endpbiB0aW1lem9uZSB0eXBlLCBhbGxvd2luZyBhY2Nlc3MgdG8gV2luZG93cwogIGludGVybmFsIHRpbWV6b25lcyAoY29udHJpYnV0ZWQgYnkgSmVmZnJleSBIYXJyaXMpLgoKLSBGaXhlZCBwYXJzaW5nIG9mIHVuaWNvZGUgZGF0ZSBzdHJpbmdzLgoKLSBBY2NlcHQgcGFyc2VyaW5mbyBpbnN0YW5jZXMgYXMgdGhlIHBhcnNlciBjb25zdHJ1Y3RvcgogIHBhcmFtZXRlciwgYmVzaWRlcyBwYXJzZXJpbmZvIChzdWIpY2xhc3Nlcy4KCi0gQ2hhbmdlZCB3ZWVrZGF5IHRvIHNwZWxsIHRoZSBub3Qtc2V0IG4gdmFsdWUgYXMgTm9uZQogIGluc3RlYWQgb2YgMC4KCi0gRml4ZWQgb3RoZXIgcmVwb3J0ZWQgYnVncy4KClsxXSBodHRwOi8vd3d3LnR3aW5zdW4uY29tL3R6L3R6LWxpbmsuaHRtCgoKVmVyc2lvbiAwLjUKLS0tLS0tLS0tLS0KCi0gUmVtb3ZlZCBGUkVRXyBwcmVmaXggZnJvbSBycnVsZSBmcmVxdWVuY3kgY29uc3RhbnRzCiAgV0FSTklORzogdGhpcyBicmVha3MgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zLgoKLSBGaXhlZCBycnVsZS5iZXR3ZWVuKCkgZm9yIGNhc2VzIHdoZXJlICJhZnRlciIgaXMgYWNoaWV2ZWQKICBiZWZvcmUgZXZlbiBzdGFydGluZywgYXMgcmVwb3J0ZWQgYnkgQW5kcmVhcyBL9mhsZXIuCgotIEZpeGVkIHR3byBkaWdpdCB6ZXJvLXllYXIgcGFyc2luZyAoc3VjaCBhcyAzMS1EZWMtMDApLCBhcwogIHJlcG9ydGVkIGJ5IEppbSBBYnJhbXNvbiwgYW5kIGluY2x1ZGVkIHRlc3QgY2FzZSBmb3IgdGhpcy4KCi0gU29ydCBleGRhdGUgYW5kIHJkYXRlIGJlZm9yZSBpdGVyYXRpbmcgb3ZlciB0aGVtLCBzbyB0aGF0CiAgaXQncyBub3QgbmVjZXNzYXJ5IHRvIHNvcnQgdGhlbSBiZWZvcmUgYWRkaW5nIHRvIHRoZSBycnVsZXNldCwKICBhcyByZXBvcnRlZCBieSBOaWNob2xhcyBQaXBlci4KCg==