LyoKIElOVEVMIENPTkZJREVOVElBTAogQ29weXJpZ2h0IDIwMTEgSW50ZWwgQ29ycG9yYXRpb24gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIFRoZSBzb3VyY2UgY29kZSBjb250YWluZWQgb3IgZGVzY3JpYmVkIGhlcmVpbiBhbmQgYWxsIGRvY3VtZW50cyByZWxhdGVkIHRvIHRoZSBzb3VyY2UgY29kZSAoIk1hdGVyaWFsIikgYXJlIG93bmVkIGJ5IEludGVsIENvcnBvcmF0aW9uIG9yIGl0cyBzdXBwbGllcnMgb3IgbGljZW5zb3JzLiBUaXRsZSB0byB0aGUgTWF0ZXJpYWwgcmVtYWlucyB3aXRoIEludGVsIENvcnBvcmF0aW9uIG9yIGl0cyBzdXBwbGllcnMgYW5kIGxpY2Vuc29ycy4gVGhlIE1hdGVyaWFsIGNvbnRhaW5zIHRyYWRlIHNlY3JldHMgYW5kIHByb3ByaWV0YXJ5IGFuZCBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgSW50ZWwgb3IgaXRzIHN1cHBsaWVycyBhbmQgbGljZW5zb3JzLiBUaGUgTWF0ZXJpYWwgaXMgcHJvdGVjdGVkIGJ5IHdvcmxkd2lkZSBjb3B5cmlnaHQgYW5kIHRyYWRlIHNlY3JldCBsYXdzIGFuZCB0cmVhdHkgcHJvdmlzaW9ucy4gTm8gcGFydCBvZiB0aGUgTWF0ZXJpYWwgbWF5IGJlIHVzZWQsIGNvcGllZCwgcmVwcm9kdWNlZCwgbW9kaWZpZWQsIHB1Ymxpc2hlZCwgdXBsb2FkZWQsIHBvc3RlZCwgdHJhbnNtaXR0ZWQsIGRpc3RyaWJ1dGVkLCBvciBkaXNjbG9zZWQgaW4gYW55IHdheSB3aXRob3V0IEludGVsknMgcHJpb3IgZXhwcmVzcyB3cml0dGVuIHBlcm1pc3Npb24uCgogTm8gbGljZW5zZSB1bmRlciBhbnkgcGF0ZW50LCBjb3B5cmlnaHQsIHRyYWRlIHNlY3JldCBvciBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHQgaXMgZ3JhbnRlZCB0byBvciBjb25mZXJyZWQgdXBvbiB5b3UgYnkgZGlzY2xvc3VyZSBvciBkZWxpdmVyeSBvZiB0aGUgTWF0ZXJpYWxzLCBlaXRoZXIgZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgaW5kdWNlbWVudCwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbnkgbGljZW5zZSB1bmRlciBzdWNoIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbXVzdCBiZSBleHByZXNzIGFuZCBhcHByb3ZlZCBieSBJbnRlbCBpbiB3cml0aW5nLgogKi8KCiNpZm5kZWYgVklERU9fRU5DT0RFUl9JTlRFUkZBQ0VfSF8KI2RlZmluZSBWSURFT19FTkNPREVSX0lOVEVSRkFDRV9IXwoKI2luY2x1ZGUgIlZpZGVvRW5jb2RlckRlZi5oIgoKY2xhc3MgSVZpZGVvRW5jb2RlciB7CnB1YmxpYzoKICAgIHZpcnR1YWwgfklWaWRlb0VuY29kZXIoKSB7fTsKICAgIHZpcnR1YWwgRW5jb2RlX1N0YXR1cyBzdGFydCh2b2lkKSA9IDA7CiAgICB2aXJ0dWFsIEVuY29kZV9TdGF0dXMgc3RvcCh2b2lkKSA9IDA7CiAgICB2aXJ0dWFsIHZvaWQgZmx1c2godm9pZCkgPSAwOwogICAgdmlydHVhbCBFbmNvZGVfU3RhdHVzIGVuY29kZShWaWRlb0VuY1Jhd0J1ZmZlciAqaW5CdWZmZXIsIHVpbnQzMl90IHRpbWVvdXQgPSBGVU5DX0JMT0NLKSA9IDA7CiAgICB2aXJ0dWFsIEVuY29kZV9TdGF0dXMgZ2V0T3V0cHV0KFZpZGVvRW5jT3V0cHV0QnVmZmVyICpvdXRCdWZmZXIsIHVpbnQzMl90IHRpbWVvdXQgPSBGVU5DX0JMT0NLKSA9IDA7CiAgICB2aXJ0dWFsIEVuY29kZV9TdGF0dXMgZ2V0UGFyYW1ldGVycyhWaWRlb1BhcmFtQ29uZmlnU2V0ICp2aWRlb0VuY1BhcmFtcykgPSAwOwogICAgdmlydHVhbCBFbmNvZGVfU3RhdHVzIHNldFBhcmFtZXRlcnMoVmlkZW9QYXJhbUNvbmZpZ1NldCAqdmlkZW9FbmNQYXJhbXMpID0gMDsKICAgIHZpcnR1YWwgRW5jb2RlX1N0YXR1cyBnZXRDb25maWcoVmlkZW9QYXJhbUNvbmZpZ1NldCAqdmlkZW9FbmNDb25maWcpID0gMDsKICAgIHZpcnR1YWwgRW5jb2RlX1N0YXR1cyBzZXRDb25maWcoVmlkZW9QYXJhbUNvbmZpZ1NldCAqdmlkZW9FbmNDb25maWcpID0gMDsKICAgIHZpcnR1YWwgRW5jb2RlX1N0YXR1cyBnZXRNYXhPdXRTaXplKHVpbnQzMl90ICptYXhTaXplKSA9IDA7Cn07CgojZW5kaWYgLyogVklERU9fRU5DT0RFUl9JTlRFUkZBQ0VfSF8gKi8K