ZGlmZiAtLWdpdCBhL21jdS9pbnRlcmZhY2UvZHJpdmVyL3BlcmlwaGVyYWwvZHJ2c2lnbmFscy5oIGIvbWN1L2ludGVyZmFjZS9kcml2ZXIvcGVyaXBoZXJhbC9kcnZzaWduYWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhlZDhiMQotLS0gL2Rldi9udWxsCisrKyBiL21jdS9pbnRlcmZhY2UvZHJpdmVyL3BlcmlwaGVyYWwvZHJ2c2lnbmFscy5oCkBAIC0wLDAgKzEsNTMyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENvcHlyaWdodCBTdGF0ZW1lbnQ6CisqICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm90ZWN0ZWQgYnkgQ29weXJpZ2h0IGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisqICBoZXJlaW4gaXMgY29uZmlkZW50aWFsLiBUaGUgc29mdHdhcmUgbWF5IG5vdCBiZSBjb3BpZWQgYW5kIHRoZSBpbmZvcm1hdGlvbgorKiAgY29udGFpbmVkIGhlcmVpbiBtYXkgbm90IGJlIHVzZWQgb3IgZGlzY2xvc2VkIGV4Y2VwdCB3aXRoIHRoZSB3cml0dGVuCisqICBwZXJtaXNzaW9uIG9mIE1lZGlhVGVrIEluYy4gKEMpIDIwMDUKKyoKKyogIEJZIE9QRU5JTkcgVEhJUyBGSUxFLCBCVVlFUiBIRVJFQlkgVU5FUVVJVk9DQUxMWSBBQ0tOT1dMRURHRVMgQU5EIEFHUkVFUworKiAgVEhBVCBUSEUgU09GVFdBUkUvRklSTVdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OUyAoIk1FRElBVEVLIFNPRlRXQVJFIikKKyogIFJFQ0VJVkVEIEZST00gTUVESUFURUsgQU5EL09SIElUUyBSRVBSRVNFTlRBVElWRVMgQVJFIFBST1ZJREVEIFRPIEJVWUVSIE9OCisqICBBTiAiQVMtSVMiIEJBU0lTIE9OTFkuIE1FRElBVEVLIEVYUFJFU1NMWSBESVNDTEFJTVMgQU5ZIEFORCBBTEwgV0FSUkFOVElFUywKKyogIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisqICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTklORlJJTkdFTUVOVC4KKyogIE5FSVRIRVIgRE9FUyBNRURJQVRFSyBQUk9WSURFIEFOWSBXQVJSQU5UWSBXSEFUU09FVkVSIFdJVEggUkVTUEVDVCBUTyBUSEUKKyogIFNPRlRXQVJFIE9GIEFOWSBUSElSRCBQQVJUWSBXSElDSCBNQVkgQkUgVVNFRCBCWSwgSU5DT1JQT1JBVEVEIElOLCBPUgorKiAgU1VQUExJRUQgV0lUSCBUSEUgTUVESUFURUsgU09GVFdBUkUsIEFORCBCVVlFUiBBR1JFRVMgVE8gTE9PSyBPTkxZIFRPIFNVQ0gKKyogIFRISVJEIFBBUlRZIEZPUiBBTlkgV0FSUkFOVFkgQ0xBSU0gUkVMQVRJTkcgVEhFUkVUTy4gTUVESUFURUsgU0hBTEwgQUxTTworKiAgTk9UIEJFIFJFU1BPTlNJQkxFIEZPUiBBTlkgTUVESUFURUsgU09GVFdBUkUgUkVMRUFTRVMgTUFERSBUTyBCVVlFUidTCisqICBTUEVDSUZJQ0FUSU9OIE9SIFRPIENPTkZPUk0gVE8gQSBQQVJUSUNVTEFSIFNUQU5EQVJEIE9SIE9QRU4gRk9SVU0uCisqCisqICBCVVlFUidTIFNPTEUgQU5EIEVYQ0xVU0lWRSBSRU1FRFkgQU5EIE1FRElBVEVLJ1MgRU5USVJFIEFORCBDVU1VTEFUSVZFCisqICBMSUFCSUxJVFkgV0lUSCBSRVNQRUNUIFRPIFRIRSBNRURJQVRFSyBTT0ZUV0FSRSBSRUxFQVNFRCBIRVJFVU5ERVIgV0lMTCBCRSwKKyogIEFUIE1FRElBVEVLJ1MgT1BUSU9OLCBUTyBSRVZJU0UgT1IgUkVQTEFDRSBUSEUgTUVESUFURUsgU09GVFdBUkUgQVQgSVNTVUUsCisqICBPUiBSRUZVTkQgQU5ZIFNPRlRXQVJFIExJQ0VOU0UgRkVFUyBPUiBTRVJWSUNFIENIQVJHRSBQQUlEIEJZIEJVWUVSIFRPCisqICBNRURJQVRFSyBGT1IgU1VDSCBNRURJQVRFSyBTT0ZUV0FSRSBBVCBJU1NVRS4gCisqCisqICBUSEUgVFJBTlNBQ1RJT04gQ09OVEVNUExBVEVEIEhFUkVVTkRFUiBTSEFMTCBCRSBDT05TVFJVRUQgSU4gQUNDT1JEQU5DRQorKiAgV0lUSCBUSEUgTEFXUyBPRiBUSEUgU1RBVEUgT0YgQ0FMSUZPUk5JQSwgVVNBLCBFWENMVURJTkcgSVRTIENPTkZMSUNUIE9GCisqICBMQVdTIFBSSU5DSVBMRVMuICBBTlkgRElTUFVURVMsIENPTlRST1ZFUlNJRVMgT1IgQ0xBSU1TIEFSSVNJTkcgVEhFUkVPRiBBTkQKKyogIFJFTEFURUQgVEhFUkVUTyBTSEFMTCBCRSBTRVRUTEVEIEJZIEFSQklUUkFUSU9OIElOIFNBTiBGUkFOQ0lTQ08sIENBLCBVTkRFUgorKiAgVEhFIFJVTEVTIE9GIFRIRSBJTlRFUk5BVElPTkFMIENIQU1CRVIgT0YgQ09NTUVSQ0UgKElDQykuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogRmlsZW5hbWU6CisgKiAtLS0tLS0tLS0KKyAqICAgIGRydnNpZ25hbHMuaAorICoKKyAqIFByb2plY3Q6CisgKiAtLS0tLS0tLQorICogICBNYXVpX1NvZnR3YXJlCisgKgorICogRGVzY3JpcHRpb246CisgKiAtLS0tLS0tLS0tLS0KKyAqICAgVGhpcyBmaWxlIGlzIGludGVuZHMgZm9yIGRyaXZlciBwcmltaXRpdmVzLgorICoKKyAqIEF1dGhvcjoKKyAqIC0tLS0tLS0KKyAqIC0tLS0tLS0KKyAqCisgKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqICAgICAgICAgICAgIEhJU1RPUlkKKyAqIEJlbG93IHRoaXMgbGluZSwgdGhpcyBwYXJ0IGlzIGNvbnRyb2xsZWQgYnkgUFZDUyBWTS4gRE8gTk9UIE1PRElGWSEhCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKgorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICoKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqIHJlbW92ZWQhCisgKiByZW1vdmVkIQorICogcmVtb3ZlZCEKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVXBwZXIgdGhpcyBsaW5lLCB0aGlzIHBhcnQgaXMgY29udHJvbGxlZCBieSBQVkNTIFZNLiBETyBOT1QgTU9ESUZZISEKKyAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIF9EUlZTSUdOQUxTX0gKKyNkZWZpbmUgX0RSVlNJR05BTFNfSAorCisjaW5jbHVkZSAiYm10LmgiCisjaW5jbHVkZSAidXNiX2NvbW0uaCIKKyNpbmNsdWRlICJrYWxfcHVibGljX2FwaS5oIiAvLyNpbmNsdWRlICJzdGFja19sdGxjb20uaCIgLy9NU0JCIGNoYW5nZSAjaW5jbHVkZSAiYXBwX2x0bGNvbS5oIgorI2luY2x1ZGUgImthbF9nZW5lcmFsX3R5cGVzLmgiCisjaW5jbHVkZSAiZGNsLmgiCisKKworLypSVEMgZHJpdmVyKi8KKyNkZWZpbmUgUlRDX1RDX0lORAkJCTAKKyNkZWZpbmUgUlRDX0FMX0lORAkJCTEKK3R5cGVkZWYgc3RydWN0IHsKKwlMT0NBTF9QQVJBX0hEUgorCWthbF91aW50OCAJCXJ0Y19pbmQ7Cit9IFJUQ19QcmltaXRpdmU7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlMT0NBTF9QQVJBX0hEUgorICAgIERDTF9SVENfREFUQV9UICAgICAgcHJldmlvdXNfcnRjOworICAgIERDTF9SVENfREFUQV9UICAgICAgbmV3X3J0YzsgICAgICAgIAorfSBSVENfVGltZV9DaGFuZ2VfSU5EX1N0cnVjdDsKKworLypLYmQgZHJpdmVyKi8KKyNkZWZpbmUgS2JkX0tleVByZXNzCQkJMAorI2RlZmluZSBLYmRfS2V5UmVsZWFzZQkJMQordHlwZWRlZiBzdHJ1Y3QgeworCUxPQ0FMX1BBUkFfSERSCisJa2FsX3VpbnQ4IAkJa3Bfc3RhdHVzOworCWthbF91aW50OCAJCWtleTsKK30gS2JkX1ByaW1pdGl2ZTsKKworLypDb21tdW5pY2F0ZWQgd2l0aCBNTUksIGNoYXJnaW5nIHN0YXR1cyovCit0eXBlZGVmIGVudW0gCit7CisgICBCTVRfQ0hBUkdFUl9JTiA9IDAsCisgICBCTVRfQ0hBUkdFUl9PVVQsCisgICBCTVRfT1ZFUlZPTFBST1RFQ1QsCisgICBCTVRfT1ZFUkJBVFRFTVAsCisgICBCTVRfTE9XQkFUVEVNUCwKKyAgIEJNVF9PVkVSQ0hBUkdFQ1VSUkVOVCwKKyAgIEJNVF9DSEFSR0VfQ09NUExFVEUsCisgICBCTVRfSU5WQUxJRF9CQVQsCisgICBCTVRfSU5WQUxJRF9DSEFSR0VSLAorICAgQk1UX0NIQVJHRV9USU1FT1VULAorICAgQk1UX0xPV0NIQVJHRUNVUlJFTlQsCisgICBCTVRfQ0hBUkdFX0JBRF9DT05UQUNULAorICAgQk1UX0JBVFRFUllfQkFEX0NPTlRBQ1QsCisgICBCTVRfVVNCX0NIQVJHRVJfSU4sCisgICBCTVRfVVNCX0NIQVJHRVJfT1VULAorICAgQk1UX1VTQl9OT19DSEFSR0lOR19JTiwKKyAgIEJNVF9VU0JfTk9fQ0hBUkdJTkdfT1VULAorICAgQk1UX0JBVFRfSU4sCisgICBCTVRfQkFUVF9PVVQKK31CTVRfQ0hSX1NUQVQ7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlMT0NBTF9QQVJBX0hEUgorCUJNVF9DSFJfU1RBVCAJCXN0YXR1czsKK30gZHJ2dWVtX3BtaWNfaW5kX3N0cnVjdDsKKworLypBREMgc2NoZWR1bGVyKi8KK3R5cGVkZWYgc3RydWN0IHsKKwlMT0NBTF9QQVJBX0hEUgorCWRvdWJsZSAgICAgICAgIGFkY192YWx1ZTsKKwlrYWxfaW50MzIgCQlhZGNfaGFuZGxlOworCWthbF9pbnQzMiAJCXZvbHQ7CisJa2FsX3VpbnQ4IAkJYWRjX3NjaGVfaWQ7Cit9IGJtdF9hZGNfbWVhc3VyZV9kb25lX2NvbmZfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisJTE9DQUxfUEFSQV9IRFIKKwlrYWxfaW50MzIgYWRjX2hhbmRsZTsKKwlrYWxfdWludDggYWRjX3NjaGVfaWQ7Cit9IGJtdF9hZGNfYWRkX2l0ZW1fcmVxX3N0cnVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworCUxPQ0FMX1BBUkFfSERSCisJa2FsX2ludDMyIGFkY19oYW5kbGU7CisJa2FsX3VpbnQ4IGFkY19zY2hlX2lkOworfSBibXRfYWRjX3JlbW92ZV9pdGVtX3JlcV9zdHJ1Y3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlMT0NBTF9QQVJBX0hEUgorCWthbF9pbnQzMiAgIGFkY19oYW5kbGU7CisJa2FsX3VpbnQzMiAgcGVyaW9kOworCWthbF91aW50OCAgIGV2YWx1YXRlX2NvdW50OworCWthbF91aW50OCAgIGFkY19zY2hlX2lkOworfSBibXRfYWRjX21vZGlmeV9wYXJhbWV0ZXJzX3JlcV9zdHJ1Y3Q7CisKKy8qQVVYIHRhc2sqLwordHlwZWRlZiBlbnVtIAoreworICAgQVVYX0lEX1BMVUdPVVQ9MCwKKyAgIEFVWF9JRF9UVk9VVCwKKyAgIEFVWF9JRF9FQVJQSE9ORSwKKyAgIEFVWF9JRF9LRVlfUFJFU1MsCisgICBBVVhfSURfS0VZX1JFTEVBU0UsCisgICBBVVhfSURfVUFSVCwKKyAgIEFVWF9JRF9DTEFNX09QRU4sCisgICBBVVhfSURfQ0xBTV9DTE9TRSwKKyAgIEFVWF9JRF9UVk9VVF9PVVQsCisgICBBVVhfSURfVFZPVVRfSU5JVDEsCisgICBBVVhfSURfREVURUNUSU9OX0RPTkUsCisgICBBVVhfSURfUExVR0lOLAorICAgQVVYX0lEX1RSQU5TTUlUVEVSX0hPTERfT04sCisgICBBVVhfSURfVFJBTlNNSVRURVJfUFVUX0RPV04sCisgICBBVVhfTUFYX0lECit9QVVYX0lEOwordHlwZWRlZiBzdHJ1Y3QgeworCUxPQ0FMX1BBUkFfSERSCisJQVVYX0lEICAgYXV4X2lkOworfSBhdXhfaWRfc3RydWN0OworCisvKkVuZ2luZWVyaW5nIG1vZGUqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgTE9DQUxfUEFSQV9IRFIKKyAgIGthbF9pbnQzMiAJCXZiYXQ7CS8qQmF0dGVyeSBWb2x0YWdlKG1pY3JvLXZvbHRhZ2UpKi8KKyAgIGthbF9pbnQzMiAgICAgYmF0X3RlbXA7CS8qQmF0dGVyeSBUZW1wZXJhdHVyZSiiSikqLworICAga2FsX2ludDMyIAkJdmF1eDsJCS8qQVVYIFZvbHRhZ2UobWljcm8tdm9sdGFnZSkqLworICAga2FsX2ludDMyIAkJY2hhcmdlX2N1cnJlbnQ7CS8qQ2hhcmdlIGN1cnJlbnQobWljcm8tQSkqLworICAga2FsX2ludDMyIAkJdmNoYXJnZXI7CS8qQ2hhcmdlciBWb2x0YWdlKG1pY3JvLXZvbHRhZ2UpKi8KK30gYWRjX2FsbF9jaGFubmVsX3N0cnVjdDsKKworLypVU0IgZHJpdmVyKi8KK3R5cGVkZWYgc3RydWN0IHsKKwlMT0NBTF9QQVJBX0hEUgorICAgdm9pZCAgICAgICAgICAgICAgICAgKnBEYXRhOyAvKiBQb2ludGVyIHRvIGRhdGEgYnVmZmVyICovCisgICBrYWxfaW50MzIgICAgICAgICAgICAgbkJ1ZmZMZW47IC8qIExlbmd0aCBvZiBkYXRhIGJ1ZmZlciAqLworCWthbF9pbnQzMiAgICAgICAgICAgICBuQnl0ZXNSZWN2OyAvKiBOdW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgKi8KK30gdXNiX21zX3JlY19kb25lX2NvbmZfc3RydWN0OworCisvKkw0LT5VU0IqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgTE9DQUxfUEFSQV9IRFIKKyAgIFVTQl9ERVZJQ0VfVFlQRSAgICAgICAgIG1vZGU7CisgICBrYWxfdWludDMyICAgICAgICAqcGFyYW1ldGVyOworfSBkcnZ1ZW1fdXNiY2ZnX3JlcV9zdHJ1Y3Q7CisKKy8qVVNCLT5VU0IqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgTE9DQUxfUEFSQV9IRFIKKyAgIFVTQl9ERVZJQ0VfVFlQRSAgICAgICAgIG1vZGU7CisgICBrYWxfdWludDMyICAgICAgICAqcGFyYW1ldGVyOworICAga2FsX3VpbnQzMiBkZXZpY2VfY29kZTsKKyAgIGthbF91aW50MzIgc3ViY2xhc3NfY29kZTsKKyAgIGthbF91aW50MzIgcHJvdG9jb2xfY29kZTsKKyAgIGthbF91aW50MzIgcHJvZHVjdF9jb2RlOworfSBkcnZ1c2JfdXNiY2ZnX3JlcV9zdHJ1Y3Q7CisKKy8qVVNCLT5MNCovCit0eXBlZGVmIHN0cnVjdCB7CisgICBMT0NBTF9QQVJBX0hEUgorICAgVVNCX0RFVklDRV9UWVBFICAgICAgICAgbW9kZTsKKyAgIGthbF91aW50MzIgICAgICAgIHJlc2VydmVkOworICAga2FsX2Jvb2wgICAgICAgICAgcmVzdWx0OworfSBkcnZ1ZW1fdXNiY2ZnX2NuZl9zdHJ1Y3Q7CisKKy8qVVNCLT5MNCovCit0eXBlZGVmIGVudW0gCit7CisgICBERVRFQ1RfQUNUSU9OX1VOS05PV049MCwKKyAgIERFVEVDVF9BQ1RJT05fUExVR0lOLAorICAgREVURUNUX0FDVElPTl9QTFVHT1VULAorICAgREVURUNUX0FDVElPTl9VU0JfU1VTUEVORCwKKyAgIERFVEVDVF9BQ1RJT05fTUFYX0lECit9VVNCX0RFVEVDVF9BQ1RJT05fSUQ7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIExPQ0FMX1BBUkFfSERSCisgICBVU0JfREVURUNUX0FDVElPTl9JRCAgICAgICAgIGFjdGlvbjsgIC8qMTogUGx1Z2luLCAwOlBsdWdPdXQqLworfWRydnVlbV91c2JkZXRlY3RfaW5kX3N0cnVjdDsKKworLy8gYWRkIGZvciB1c2IgY2hhcmdpbmcKK3R5cGVkZWYgZW51bXsKKwlCTVRfVVNCXzEwMCwKKwlCTVRfVVNCXzUwMAorfWJtdF91c2JfaW5kX2VudW07CisKK3R5cGVkZWYgc3RydWN0eworCUxPQ0FMX1BBUkFfSERSCisJUE1VX0NIUl9DVVJSRU5UX0VOVU0gIHVzYl9pbmQ7Cit9Ym10X3VzYl9pbmRfc3RydWN0OworCit0eXBlZGVmIHN0cnVjdHsKKwlMT0NBTF9QQVJBX0hEUgorCVBXX0NUUkxfUE9XRVJfT05fUkVBU09OIHBvd2VyX29uOworCWthbF91aW50MzIgCXBvd2Vyb25fdGltZV9sZWZ0OworfWRydnVlbV9wb3dlcl9vbl9pbmRfc3RydWN0OworCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgTE9DQUxfUEFSQV9IRFIKKyAgIGthbF91aW50OCB1c2JfaXBfcG9ydDsKKyAgIGthbF91aW50OCBmZWF0dXJlX2luZGV4OworLy8gIFVTQl9IQ0RfU1RBVFVTIHJlc3VsdDsKKyAgIGthbF91aW50OCByZXN1bHQ7CisgICBrYWxfdWludDMyIHBhcmFtOworfXVzYl9ob3N0X3VzYmF0dGFjaF9pbmRfc3RydWN0OworCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgTE9DQUxfUEFSQV9IRFIKKyAgIGthbF9ib29sIGNvbmZpcm07Cit9cm5kaXNfdXNiX2NvbmZpZ19jbmZfc3RydWN0OworCisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLU1UUC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qCisgKiBNYWNybworICovCisjZGVmaW5lIE1UUF9QQVJBTV9NQVggICA1CisjZGVmaW5lIE1UUF9FVkVOVF9NQVggICAzCisKKy8qCisgKiBFbnVtCisgKi8KKwordHlwZWRlZiBlbnVtIHsKKyAgIFVTQl9NVFBfUkVTVUxUX09LID0gMCwKKyAgIFVTQl9NVFBfUkVTVUxUX0NPTlRJTlVFLAorICAgVVNCX01UUF9SRVNVTFRfQUJPUlRFRCwKKyAgIFVTQl9NVFBfUkVTVUxUX0RFVklDRV9CVVNZLAorICAgVVNCX01UUF9SRVNVTFRfTk9UX0VOQUJMRSwKKyAgIFVTQl9NVFBfUkVTVUxUX0FMUkVBRFlfRU5BQkxFLAorICAgVVNCX01UUF9SRVNVTFRfVU5LTk9XTl9FUlJPUgorfXVzYl9tdHBfcmVzdWx0X2VudW07CisKKwordHlwZWRlZiBlbnVtIHsKKyAgIFVTQl9NVFBfRVZFTlRfTk9STUFMID0gMCwKKyAgIFVTQl9NVFBfRVZFTlRfQUJPUlQKK311c2JfbXRwX2V2ZW50X2VudW07CisKKworLyoKKyAqIFN0cnVjdAorICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIExPQ0FMX1BBUkFfSERSCisgICBrYWxfaW50MzIgIHJlc3VsdF9jb2RlOyAvKiA8ICAwOiBGUyBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSAwOiB1c2JfbXRwX3Jlc3VsdF9lbnVtICovCit9dXNiX210cF9lbmFibGVfcnNwX3N0cnVjdCwgdXNiX210cF9kaXNhYmxlX3JzcF9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgTE9DQUxfUEFSQV9IRFIKKyAgIGthbF91aW50MTYgb3BfY29kZTsgICAgICAgICAgICAgICAgICAgICAvKiBvcGVyYXRpb24gKi8KKyAgIGthbF91aW50MzIgb3BfcGFyYW1zW01UUF9QQVJBTV9NQVhdOyAgICAvKiBvcGVyYXRpb24gKi8KKyAgICAgICAgICAgICAgIAorLy8gICBrYWxfdWludDE2IG9wX3NlcmlhbF9ubzsgICAgICAgICAgICAgICAgLyogc3RhcnQgZnJvbSAwICovCisKKyAgIC8qIERhdGEgcGhhc2UgKi8KKyAgIGthbF91aW50MzIgZGF0YV90b3RhbF9zaXplOyAgICAgICAgICAgICAvKiBzaXplIG9mIHRvdGFsIGRhdGEsIDAgbWVhbnMgbm8gRGF0YSBwaGFzZSAqLworICAga2FsX3VpbnQ4ICAqZGF0YV9wb29sX3B0cjsgICAgICAgICAgICAgIC8qIGRhdGEgcG9vbCAqLworICAga2FsX3VpbnQzMiBkYXRhX3Bvb2xfc2l6ZTsgICAgICAgICAgICAgIC8qIHNpemUgb2YgZGF0YSBwb29sICovCisgICBrYWxfdWludDMyIGRhdGFfc2l6ZTsgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBvZiByZWFsIGRhdGEsIHNpZ25sZSBkaXJlY3Rpb24gKi8KK311c2JfbXRwX29wZXJhdGlvbl9yZXFfc3RydWN0OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIExPQ0FMX1BBUkFfSERSCisgICAgCisgICBrYWxfaW50MzIgIHJlc3VsdF9jb2RlOyAvKiA8ICAwOiBGUyBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49IDA6IHVzYl9tdHBfcmVzdWx0X2VudW0gKi8gICAgICAgICAgICAgICAgCisgICBrYWxfdWludDE2IHJzcF9jb2RlOworICAga2FsX3VpbnQzMiByc3BfcGFyYW1zW01UUF9QQVJBTV9NQVhdOworCisgICBrYWxfdWludDE2IG9wX2NvZGU7CisvLyAgIGthbF91aW50MTYgb3Bfc2VyaWFsX25vOyAgICAgICAgICAgICAgICAvKiBzdGFydCBmcm9tIDAgKi8KKworICAgLyogRGF0YSBwaGFzZSAqLworICAga2FsX3VpbnQzMiBkYXRhX3RvdGFsX3NpemU7ICAgICAgICAgICAgIC8qIHNpemUgb2YgdG90YWwgZGF0YSwgMCBtZWFucyBubyBEYXRhIHBoYXNlICovCisgICBrYWxfdWludDggICpkYXRhX3Bvb2xfcHRyOyAgICAgICAgICAgICAgLyogZGF0YSBwb29sICovCisgICBrYWxfdWludDMyIGRhdGFfcG9vbF9zaXplOyAgICAgICAgICAgICAgLyogc2l6ZSBvZiBkYXRhIHBvb2wgKi8KKyAgIGthbF91aW50MzIgZGF0YV9zaXplOyAgICAgICAgICAgICAgICAgICAvKiBzaXplIG9mIHJlYWwgZGF0YSAqLworfXVzYl9tdHBfb3BlcmF0aW9uX3JzcF9zdHJ1Y3Q7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgTE9DQUxfUEFSQV9IRFIKKyAgIGthbF91aW50MTYgZXZlbnQ7ICAgICAgIC8vIHNlZSB1c2JfbXRwX2V2ZW50X2VudW0KKyAgIGthbF91aW50MTYgZXZlbnRfY29kZTsKKyAgIGthbF91aW50MzIgcGFyYW1zW01UUF9FVkVOVF9NQVhdOworfXVzYl9tdHBfZXZlbnRfaW5kX3N0cnVjdDsKKworCisjZW5kaWYKKwo=