IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICAgICAgICAgICBDQURFTkNFIENPUFlSSUdIVCBOT1RJQ0UKIyAgICAgICAgIKkgMjAwOC0yMDEzIENhZGVuY2UgRGVzaWduIFN5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBGb3VuZGF0aW9uIEZsb3cgaXMgcHJvdmlkZWQgYXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcGVyZm9ybSBzcGVjaWFsaXplZAojIHRhc2tzLgojCiMgVGhpcyB3b3JrIG1heSBub3QgYmUgY29waWVkLCByZS1wdWJsaXNoZWQsIHVwbG9hZGVkLCBvciBkaXN0cmlidXRlZCBpbiBhbnkgd2F5LAojIGluIGFueSBtZWRpdW0sIHdoZXRoZXIgaW4gd2hvbGUgb3IgaW4gcGFydCwgd2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24KIyBmcm9tIENhZGVuY2UuIE5vdHdpdGhzdGFuZGluZyBhbnkgcmVzdHJpY3Rpb25zIGhlcmVpbiwgc3ViamVjdCB0byBjb21wbGlhbmNlCiMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIENhZGVuY2Ugc29mdHdhcmUgbGljZW5zZSBhZ3JlZW1lbnQgdW5kZXIKIyB3aGljaCB0aGlzIG1hdGVyaWFsIHdhcyBwcm92aWRlZCwgdGhpcyBtYXRlcmlhbCBtYXkgYmUgY29waWVkIGFuZCBpbnRlcm5hbGx5CiMgZGlzdHJpYnV0ZWQgc29sZWx5IGZvciBpbnRlcm5hbCBwdXJwb3NlcyBmb3IgdXNlIHdpdGggQ2FkZW5jZSB0b29scy4KIwojIFRoaXMgd29yayBpcyBDYWRlbmNlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBhbmQgbWF5IHVuZGVyIG5vIGNpcmN1bXN0YW5jZXMgYmUKIyBnaXZlbiB0byB0aGlyZCBwYXJ0aWVzLCBuZWl0aGVyIGluIG9yaWdpbmFsIG5vciBpbiBtb2RpZmllZCB2ZXJzaW9ucywgd2l0aG91dAojIGV4cGxpY2l0IHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIENhZGVuY2UuIFRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaGVyZWluIGlzCiMgdGhlIHByb3ByaWV0YXJ5IGFuZCBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24gb2YgQ2FkZW5jZSBvciBpdHMgbGljZW5zb3JzLCBhbmQKIyBpcyBzdXBwbGllZCBzdWJqZWN0IHRvLCBhbmQgbWF5IGJlIHVzZWQgb25seSBieSBDYWRlbmNlJ3MgY3VycmVudCBjdXN0b21lcnMKIyBpbiBhY2NvcmRhbmNlIHdpdGgsIGEgcHJldmlvdXNseSBleGVjdXRlZCBsaWNlbnNlIGFncmVlbWVudCBiZXR3ZWVuIENhZGVuY2UKIyBhbmQgaXRzIGN1c3RvbWVyLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUSElTIE1BVEVSSUFMIElTIFBST1ZJREVEIEJZIENBREVOQ0UgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAojIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiMgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KIyBJTiBOTyBFVkVOVCBTSEFMTCBDQURFTkNFIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwKIyBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAojIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUgojIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgIE1BVEVSSUFMLCBFVkVOIElGCiMgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ROUyBGT1VOREFUSU9OIEZMT1ciCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKIyBUaGlzIGlzIHRoZSBmb3VuZGF0aW9uIGZsb3cgc2V0dXAgZmlsZS4gIEl0IGNvbnRhaW5zIGFsbCB0aGUgbmVjZXNzYXJ5IGRlc2lnbiIKIyBkYXRhIHRvIGRyaXZlIGFsbCB0aGUgQ0ROUyBmb3VuZGF0aW9uIGZsb3dzLiBFYWNoIGZsb3cgd2lsbCBhbHNvIHJlcXVpcmUgYW4iCiMgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZpbGUgdG8gZGVmaW5lIGZsb3cgc3BlY2lmaWMgaW5mb3JtYXRpb246IgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCiMgSU5OT1ZVUyAtPiAgIGlubm92dXNfY29uZmlnLnRjbCAoZm9yIGZsYXQgYW5kIGhpZXIgaW1wbGVtZW50YXRpb24gZmxvd3MpIgojICAgICAgICAgKyAgICAgbHBfY29uZmlnLnRjbCAoYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgZmxhdCBhbmQgaGllciBscCBmbG93cykiCiMgICAgICAgICAtPiBwcm90b19jb25maWcudGNsIChmb3IgdGhlIHByb3RvdHlwaW5nIGZsb3cpIgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCgpnbG9iYWwgdmFycwpzZXQgdmFycyh2ZXJzaW9uKSAxNS4xCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgRGVmaW5lIHNvbWUgdmFyaWFibGVzIHRvIHBvaW50IHRvIGRhdGEsIGxpYnJhcmllcywgYW5kIHNjcmlwdHM7CiMgc2NyaXB0X3Jvb3QgaXMgcmVxdWlyZWQgYW5kIG11c3QgcG9pbnQgdG8gdGhlIGZvdW5kYXRpb24gZmxvdwojIFNDUklQVFMgZGlyZWN0b3J5LiAgUmVjb21tZW5kYXRpb24gaXMgdGhhdCB0aGUgU0NSSVBUUyBkaXJlY3RvcnkKIyBzaG91bGQgcmVzaWRlIHdpdGhpbiB0aGUgUlVOIGRpcmVjdG9yeSAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpzZXQgdmFycyhkZXNpZ25fcm9vdCkgPHBhdGggdG8gZGVzaWduIGRhdGE+CnNldCB2YXJzKHNjcmlwdF9yb290KSAiLi9TQ1JJUFRTIgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSB1c2VkIHRvIGRlZmluZSAKIyB0aGUgZGVzaWduIGRhdGEgZm9yIHRoZSBmbG93LiAgRWl0aGVyIGEgZnBfZmlsZSwgCiMgZGVmX2ZpbGUgb3IgYm90aCBjYW4gYmUgZGVmaW5lZAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNldCB2YXJzKGRlc2lnbikgICAgICAgICAgPHN0cmluZz4gCnNldCB2YXJzKG5ldGxpc3QpICAgICAgICAgPGZpbGU+CnNldCB2YXJzKGZwX2ZpbGUpICAgICAgICAgPGZpbGU+CiNzZXQgdmFycyhvYV9mcCkgICAgICAgICAgICI8bGliPiA8Y2VsbD4gPHZpZXc+Igojc2V0IHZhcnMoZGVmX2ZpbGVzKSAgICAgICA8bGlzdD4KI3NldCB2YXJzKGZwX3RjbF9maWxlKSAgICA8VENMIGZpbGU+CiNzZXQgdmFycyhmcF90Y2xfcHJvYykgICAgPFRDTCBwcm9jZWR1cmUgbmFtZT4Kc2V0IHZhcnMoY3RzX3NwZWMpICAgICAgICA8bGlzdD4KI3NldCB2YXJzKHNjYW5fZGVmKSAgICAgICA8bGlzdD4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzZXQgdmFycyhwcm9jZXNzKSAgICAgICAgIDxzdHJpbmc+CnNldCB2YXJzKG1heF9yb3V0ZV9sYXllcikgPGludGVnZXI+IApzZXQgdmFycyhnZW5lcmF0ZV90cmFja3MpIDxib29sZWFuPiAoT1BUSU9OQUwpCiNzZXQgdmFycyhob25vcl9waXRjaCkgICAgIDxib29sZWFuPiAoT1BUSU9OQUwpCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBPbmUgb2YgY3BmX2ZpbGUgYW5kIGllZWUxODAxX2ZpbGUgaXMgUkVRVUlSRUQgZm9yIGxvdyBwb3dlciBmbG93cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNzZXQgdmFycyhjcGZfZmlsZSkgICAgICAgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKGllZWUxODAxX2ZpbGUpICAgICAgICAgIDxmaWxlPgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgT3B0aW9uYWxseSBzZXQgdGhlIGZvbGxvd2luZyB0byBrZWVwIHRoZSBwcmV2aW91c2x5IGRlZmluZWQgcm93cwojIElmIHVzaW5nIElFRUUgMTgwMSwgcmVwbGFjZSAiY3BmIiB3aXRoICJpZWVlMTgwMSIuCiNzZXQgdmFycyhjcGZfa2VlcF9yb3dzKSAgICAgICAgICA8Ym9vbGVhbj4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZpbmUgcG93ZXIvZ3JvdW5kIG5ldHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojc2V0IHZhcnMocG93ZXJfbmV0cykgICAgICAgICAgICAgPGxpc3Q+CiNzZXQgdmFycyhncm91bmRfbmV0cykgICAgICAgICAgICA8bGlzdD4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFRoZSBmb2xsb3dpbmcgYXJlIGZvciBkZWZpbmluZyB1c2VyIElMTXMgZm9yIGZsYXQgb3IgaGllcmFyY2hpY2FsIGZsb3dzLgojIHZhcnMoPGlsbT4sbGVmX2ZpbGUpIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZSBJTE0gbGVmIGZpbGUgZG9lcyBub3QgCiMgZXhpc3QgaW4gdGhlIHZhcnMobGVmX2ZpbGVzKSBsaXN0LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNzZXQgdmFycyhpbG1fbGlzdCkgICAgICAgICAgICAgICA8bGlzdD4gCiNzZXQgdmFycyg8aWxtPixpbG1fZGlyKSAgICAgICAgICA8ZGlyZWN0b3J5PiAKI3NldCB2YXJzKDxpbG0+LGxlZl9maWxlKSAgICAgICAgIDxmaWxlPiAgCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBUaGUgZm9sbG93aW5nIGFyZSBSRVFVSVJFRCBmb3IgdGhlIElMTSBiYXNlZCAKIyBoaWVyYXJjaGljYWwgZmxvdyBidXQgYXJlIG5vdCBuZWNlc3NhcnkgZm9yCiMgdGhlIGZsYXQgaW1wbGVtZW50YXRpb24gZmxvd3MuCiMgLSBjdHMgc3BlYyBmb3IgZWFjaCBwYXJ0aWl0aW9uCiMgLSBsYXRlbmN5IHNkYyBmb3IgZWFjaCBwYXJ0aXRpb24KIyAtIGVkaSBjb25maWcgZmlsZSBmb3IgZWFjaCAod2hlbiBhcHBsaWNhYmxlKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNzZXQgdmFycyhwYXJ0aXRpb25fbGlzdCkgICAgICAgICA8bGlzdD4gCiNzZXQgdmFycyg8cHRuMT4sY3RzX3NwZWMpICAgICAgICA8ZmlsZT4gCiNzZXQgdmFycyg8cHRuMT4sbGF0ZW5jeV9zZGMpICAgICA8ZmlsZT4KI3NldCB2YXJzKDxwdG4xPiw8aW5ub3Z1c19jb25maWdfdGNsKSA8ZmlsZT4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZpbmUgbGlicmFyeSBzZXRzIC4uLiAoUkVRVUlSRUQpIAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNldCB2YXJzKGxpYnJhcnlfc2V0cykgICAgICAgIDxsaXN0PgoKc2V0IHZhcnMoPHNldDE+LHRpbWluZykgICAgICAgPGxpc3Q+CnNldCB2YXJzKDxzZXQxPixzaSkgICAgICAgICAgIDxsaXN0PgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIERlZmluZSBsZWYgbGlicmFyeSBmaWxlcyAuLi4gKFJFUVVJUkVEKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNldCB2YXJzKGxlZl9maWxlcykgICAgICAgICAgIDxsaXN0PgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIERlZmluZSByYyBjb3JuZXJzIC4uLiAoUkVRVUlSRUQpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc2V0IHZhcnMocmNfY29ybmVycykgICAgICAgICAgICAgPGxpc3Q+CnNldCB2YXJzKDxjb3JuZXIxPixUKSAgICAgICAgICAgIDxpbnRlZ2VyPgpzZXQgdmFycyg8Y29ybmVyMT4sY2FwX3RhYmxlKSAgICA8ZmlsZT4KI3NldCB2YXJzKDxjb3JuZXIxPixhdGZfZmlsZSkgICAgPGZpbGU+CnNldCB2YXJzKDxjb3JuZXIxPixxeF90ZWNoX2ZpbGUpIDxmaWxlPgojIHNldCB2YXJzKDxjb3JuZXI+LHF4X2xpYl9maWxlKSAgPGZpbGU+CiMgc2V0IHZhcnMoPGNvcm5lcj4scXhfY29uZl9maWxlKSA8ZmlsZT4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBTY2FsZSBmYWN0b3JzIGFyZSBhbHNvIG9wdGlvbmFsIGJ1dCBhcmUgc3Ryb25nbHkgZW5jb3VyYWdlZCBmb3IgCiMgb2J0YWluaW5nIHRoZSBiZXN0IGZsb3cgY29udmVyZ2VuY2UgYW5kIFFvUi4gIAojIFNjYWxpbmcgZmFjdG9ycyBhcmUgYXBwbGllZCBwZXIgcmMgY29ybmVyCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBzZXQgdmFycyg8Y29ybmVyMT4sZGVmX3Jlc19mYWN0b3IpICAgICA8cHJlLXJvdXRlIHJlc2lzdGFuY2Ugc2NhbGUgZmFjdG9yPgojIHNldCB2YXJzKDxjb3JuZXIxPixkZXRfcmVzX2ZhY3RvcikgICAgIDxwb3N0LXJvdXRlIHJlc2lzdGFuY2Ugc2NhbGUgZmFjdG9yPgojIHNldCB2YXJzKDxjb3JuZXIxPixkZWZfY2FwX2ZhY3RvcikgICAgIDxwcmUtcm91dGUgY2FwYWNpdGFuY2Ugc2NhbGUgZmFjdG9yPgojIHNldCB2YXJzKDxjb3JuZXIxPixkZXRfY2FwX2ZhY3RvcikgICAgIDxwb3N0LXJvdXRlIGNhcGFjaXRhbmNlIHNjYWxlIGZhY3Rvcj4KIyBzZXQgdmFycyg8Y29ybmVyMT4sZGVmX2Nsa19yZXNfZmFjdG9yKSA8cHJlLXJvdXRlIGNsb2NrIHJlc2lzdGFuY2Ugc2NhbGUgZmFjdG9yPgojIHNldCB2YXJzKDxjb3JuZXIxPixkZXRfY2xrX3Jlc19mYWN0b3IpIDxwb3N0LXJvdXRlIGNsb2NrIHJlc2lzdGFuY2Ugc2NhbGUgZmFjdG9yPgojIHNldCB2YXJzKDxjb3JuZXIxPixkZWZfY2xrX2NhcF9mYWN0b3IpIDxwcmUtcm91dGUgY2xvY2sgY2FwYWNpdGFuY2Ugc2NhbGUgZmFjdG9yPgojIHNldCB2YXJzKDxjb3JuZXIxPixkZXRfY2xrX2NhcF9mYWN0b3IpIDxwb3N0LXJvdXRlIGNsb2NrIGNhcGFjaXRhbmNlIHNjYWxlIGZhY3Rvcj4KIyBzZXQgdmFycyg8Y29ybmVyMT4seGNhcF9mYWN0b3IpICAgICAgICA8Y291cGxpbmcgY2FwYWNpdGFuY2Ugc2NhbGUgZmFjdG9yPgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCnNldCB2YXJzKDxjb3JuZXIxPixkZWZfcmVzX2ZhY3RvcikgICAgIDxmbG9hdD4Kc2V0IHZhcnMoPGNvcm5lcjE+LGRldF9yZXNfZmFjdG9yKSAgICAgPGZsb2F0IHwgdHJpcGxldD4Kc2V0IHZhcnMoPGNvcm5lcjE+LGRlZl9jYXBfZmFjdG9yKSAgICAgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sZGV0X2NhcF9mYWN0b3IpICAgICA8ZmxvYXQgfCB0cmlwbGV0PgpzZXQgdmFycyg8Y29ybmVyMT4sZGVmX2Nsa19yZXNfZmFjdG9yKSA8ZmxvYXQ+CnNldCB2YXJzKDxjb3JuZXIxPixkZXRfY2xrX3Jlc19mYWN0b3IpIDxmbG9hdD4Kc2V0IHZhcnMoPGNvcm5lcjE+LGRlZl9jbGtfY2FwX2ZhY3RvcikgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sZGV0X2Nsa19jYXBfZmFjdG9yKSA8ZmxvYXQ+CnNldCB2YXJzKDxjb3JuZXIxPix4Y2FwX2ZhY3RvcikgICAgICAgIDxmbG9hdCB8IHRyaXBsZXQ+CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgRGVmaW5lIG9wZXJhdGluZyBjb25kaXRpb25zIChvcHRpb25hbCkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIHNldCB2YXJzKG9wY29uZHMpICI8b3Bjb25kMT4gPG9wY29uZDI+IC4uLiIKIyBzZXQgdmFycyg8b3Bjb25kMT4sbGlicmFyeV9maWxlKSA8bGlicmFyeSBmaWxlID4KIyBzZXQgdmFycyg8b3Bjb25kMT4scHJvY2VzcykgPHByb2Nlc3Mgc2NhbGUgZmFjdG9yPgojIHNldCB2YXJzKDxvcGNvbmQxPix2b2x0YWdlKSA8dm9sdGFnZT4KIyBzZXQgdmFycyg8b3Bjb25kMT4sdGVtcGVyYXR1cmUpIDx0ZW1wZXJhdHVyZT4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIERlZmluZSBkZWxheSBjb3JuZXJzIC4uLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNldCB2YXJzKGRlbGF5X2Nvcm5lcnMpICAgICAgICAgPGxpc3Q+CnNldCB2YXJzKDxjb3JuZXIxPixsaWJyYXJ5X3NldCkgPHN0cmluZz4Kc2V0IHZhcnMoPGNvcm5lcjE+LHJjX2Nvcm5lcikgICA8c3RyaW5nPgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRGVmaW5lIGRlcmF0aW5nIGZhY3RvcnMgZm9yIE9DViBoZXJlIChjbG9jayBhbmQgZGF0YSkuIAojIERlcmF0aW5nIGZhY3RvcnMgYXJlIGFwcGxpZWQgcGVyIGRlbGF5IGNvcm5lciAuLi4KIyBPUiwgc2ltcGx5IGRlZmluZSB2YXJzKGRlcmF0ZV90Y2wpIHBsdWctaW4gd2l0aCBBTEwKIyB5b3VyIHNldF90aW1pbmdfZGVyYXRlIGNvbW1hbmRzIGFuZCBpdCB3aWxsIGJlIHVzZWQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzZXQgdmFycyg8Y29ybmVyMT4sZGF0YV9jZWxsX2xhdGUpICAgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sZGF0YV9jZWxsX2Vhcmx5KSAgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sZGF0YV9uZXRfbGF0ZSkgICAgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sZGF0YV9uZXRfZWFybHkpICAgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sY2xvY2tfY2VsbF9sYXRlKSAgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sY2xvY2tfY2VsbF9lYXJseSkgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sY2xvY2tfbmV0X2xhdGUpICAgPGZsb2F0PgpzZXQgdmFycyg8Y29ybmVyMT4sY2xvY2tfbmV0X2Vhcmx5KSAgPGZsb2F0Pgojc2V0IHZhcnMoPGNvcm5lcjE+LGNlbGxfY2hlY2tfbGF0ZSkgIDxmbG9hdD4KI3NldCB2YXJzKDxjb3JuZXIxPixjZWxsX2NoZWNrX2Vhcmx5KSA8ZmxvYXQ+CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgRGVmaW5lIGNvbnN0cmFpbnRzIG1vZGVzIC4uLiAoUkVRVUlSRUQpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc2V0IHZhcnMoY29uc3RyYWludF9tb2RlcykgICAgICA8bGlzdD4Kc2V0IHZhcnMoPG1vZGUxPixwcmVfY3RzX3NkYykgICA8ZmlsZT4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoZSBmb2xsb3dpbmcgYXJlIG9wdGlvbmFsIGZvciBlYWNoIG1vZGUgLi4uCiMgVXNlIEVJVEhFUiBpbmNyZW1lbnRhbCBPUiBmdWxsIHBvc3QgY3RzIHNkYwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNzZXQgdmFycyg8bW9kZTE+LHBvc3RfY3RzX3NkYykgIDxmaWxlPgojc2V0IHZhcnMoPG1vZGUxPixpbmNyX2N0c19zZGMpICA8ZmlsZT4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZpbmUgYW5hbHlzaXMgdmlld3MgLi4uIChSRVFVSVJFRCkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzZXQgdmFycyhzZXR1cF9hbmFseXNpc192aWV3cykgICAgPGxpc3Q+CnNldCB2YXJzKGhvbGRfYW5hbHlzaXNfdmlld3MpICAgICA8bGlzdD4KCnNldCB2YXJzKDx2aWV3MT4sZGVsYXlfY29ybmVyKSAgICA8c3RyaW5nPgpzZXQgdmFycyg8dmlldzE+LGNvbnN0cmFpbnRfbW9kZSkgPHN0cmluZz4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZWZpbmUgYWN0aXZlIHNldHVwIGFuZCBob2xkIHZpZXdzIGFuZCBkZW5vdGUgCiMgd2hpY2ggYXJlIGRlZmF1bHQgKFJFUVVJUkVEKQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCnNldCB2YXJzKGRlZmF1bHRfc2V0dXBfdmlldykgICAgICA8c3RyaW5nPgpzZXQgdmFycyhkZWZhdWx0X2hvbGRfdmlldykgICAgICAgPHN0cmluZz4Kc2V0IHZhcnMoYWN0aXZlX3NldHVwX3ZpZXdzKSAgICAgIDxsaXN0PgpzZXQgdmFycyhhY3RpdmVfaG9sZF92aWV3cykgICAgICAgPGxpc3Q+CgpzZXQgdmFycyhwb3dlcl9hbmFseXNpc192aWV3KSAgICAgPHN0cmluZz4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIERlZmluZSBHRFMgaW5mb3JtYXRpb24gLi4uIChPUFRJT05BTCkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojc2V0IHZhcnMoZ2RzX2ZpbGVzKSAgICAgICAgICAgICA8bGlzdD4gCiNzZXQgdmFycyhnZHNfbGF5ZXJfbWFwKSAgICAgICAgIDxmaWxlPgojc2V0IHZhcnMocXJjX2xheWVyX21hcCkgICAgICAgICA8ZmlsZT4KI3NldCB2YXJzKHFyY19saWJyYXJ5KSAgICAgICAgICAgPGRpcmVjdG9yeT4KI3NldCB2YXJzKHFyY19jb25maWdfZmlsZSkgICAgICAgPGZpbGU+CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgRGVmaW5lIGV4dHJhY3Rpb24gdGhyZXNob2xkcy4gIEJlbG93IGFyZSB0aGUgcmVjb21tZW5kZWQgc2V0dGluZ3MgZm9yIDkwbm0gCiMgYW5kIGJlbG93LiAgVGhlIGFyZSBub3QgdGhlIGZsb3cgZGVmYXVsdHNzbyB0aGV5IG5lZWQgdG8gYmUgc2V0IGhlcmUuIAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiNzZXQgdmFycyhyZWxhdGl2ZV9jX3RocmVzaCkgICAgICAgICA8ZmxvYXQ+CiNzZXQgdmFycyh0b3RhbF9jX3RocmVzaCkgICAgICAgICAgICA8ZmxvYXQ+IAojc2V0IHZhcnMoY291cGxpbmdfY190aHJlc2gpICAgICAgICAgPGZsb2F0PgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIERlZmluZSBub2lzZSBhbmFseXNpcyBzZXR0aW5ncy4gIEJlbG93IGFyZSB0aGUgcmVjb21tZW5kZWQgc2V0dGluZ3MgZm9yIAojIDkwbm0gYW5kIGJlbG93LiAgVGhleSBhcmUgbm90IHRoZSBmbG93IGRlZmF1bHRzIGFzIHRoZXkgY29tZSB3aXRoIGEgCiMgcnVuIHRpbWUgcGVuYWx0eQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiNzZXQgdmFycyhkZWx0YV9kZWxheV90aHJlc2hvbGQpICAgICA8ZmxvYXQ+IAoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBWYXJpYWJsZXMgZm9yIE9BIGRlc2lnbiBpbXBvcnQgYW5kIGV4cG9ydCAoT1BUSU9OQUwpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNzZXQgdmFycyhvYV9kZXNpZ25fbGliKSAgICAgICAgIDxzdHJpbmc+CiNzZXQgdmFycyhvYV9kZXNpZ25fY2VsbCkgICAgICAgIDxzdHJpbmc+CiNzZXQgdmFycyhvYV9kZXNpZ25fdmlldykgICAgICAgIDxzdHJpbmc+CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNzZXQgdmFycyhvYV9yZWZfbGliKSAgICAgICAgICAgIDxzdHJpbmc+CiNzZXQgdmFycyhvYV9hYnN0cmFjdF9uYW1lKSAgICAgIDxzdHJpbmc+CiNzZXQgdmFycyhvYV9sYXlvdXRfbmFtZSkgICAgICAgIDxzdHJpbmc+CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIERpc3RyaWJ1dGlvbiBzZXR1cCAtIGxzZiwgcnNoLCBsb2NhbCwgb3IgY3VzdG9tCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiNzZXQgdmFycyhkaXN0cmlidXRlKSAgICAgICAgICAgICAgICA8bG9jYWwgfCBjdXN0b20gfCBsc2YgfCByc2g+CiNzZXQgdmFycyhkaXN0cmlidXRlX3RpbWVvdXQpICAgICAgICA8c2Vjb25kcz4KI3NldCB2YXJzKGN1c3RvbSxzY3JpcHQpICAgICAgICAgICAgIDxzdHJpbmc+CiNzZXQgdmFycyhsc2YscXVldWUpICAgICAgICAgICAgICAgICA8c3RyaW5nPgojc2V0IHZhcnMobHNmLHJlc291cmNlKSAgICAgICAgICAgICAgPHN0cmluZz4KI3NldCB2YXJzKGxzZixhcmdzKSAgICAgICAgICAgICAgICAgIDxzdHJpbmc+CiNzZXQgdmFycyhsb2NhbF9jcHVzKSAgICAgICAgICAgICAgICA8aW50ZWdlcj4KI3NldCB2YXJzKHJlbW90ZV9ob3N0cykgICAgICAgICAgICAgIDxpbnRlZ2VyPgojc2V0IHZhcnMoY3B1c19wZXJfcmVtb3RlX2hvc3QpICAgICAgPGludGVnZXI+CiNzZXQgdmFycyhyc2gsaG9zdHMpICAgICAgICAgICAgICAgICA8bGlzdD4KI3NldCB2YXJzKHJzaCxob3N0cykgICAgICAgICAgICAgICAgIDxsaXN0PgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBEZXNpZ24gdmFyaWFibGVzIHRvIGhhbmRlbCBsYXJnZSBkZXNpZ25zIDEwK00gaW5zdGFuY2VzCiMgc2V0IHBsYWNlbWVudF9iYXNlZF9wdG4gdG8gMSB0byBnZXQgcGxhY2UgYmFzZWQgZmxvdwojIHNldCBhYnV0dGVkX2Rlc2lnbiB0byAxIHRvIGdldCBzdGVwcyBsaWtlIGZlZWR0aHJyb3VoIHdpdGggY29ycmVjdAojIHRyaWFsUm91dGUgc2V0dGluZ3MKIyBzZXQgaW5zZXJ0X2ZlZWR0aHJvdWdoIHRvIDEgdG8gYWRkIGZlZWR0aHJvdWdoIGZvciBjaGFubmVsLWJhc2VkCiMgZGVzaWducyAoZmVlZHRocm91Z2ggaXMgYWx3YXlzIGluc2VydGVkIGZvciBjaGFubmVsbGVzcyBkZXNpZ25zLAojIGkuZS4gdGhvc2Ugd2hlcmUgYWJ1dHRlZF9kZXNpZ24gaXMgMSkKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKI3NldCB2YXJzKHBsYWNlbWVudF9iYXNlZF9wdG4pICAgICAgICAgICAgICAgIDxib29sZWFuPgojc2V0IHZhcnMoYWJ1dHRlZF9kZXNpZ24pICAgICAgICAgICAgICAgICAgICAgPGJvb2xlYW4+CiNzZXQgdmFycyhpbnNlcnRfZmVlZHRocm91Z2gpICAgICAgICAgICAgICAgICA8Ym9vbGVhbj4KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgVmFyaWFibGVzIGNvbnRyb2xsaW5nIHRoZSB1c2Ugb2YgZmxleG1vZGVscyBpbiB0aGUgdG9wLWRvd24KIyBoaWVyYXJjaGljYWwgZmxvdy4KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKI3NldCB2YXJzKHVzZV9mbGV4bW9kZWxzKSAgICAgICAgICAgICAgICAgICAgIDxib29sZWFuPgojc2V0IHZhcnMobW9kZWxfZ2VuLGFydF9iYXNlZCkgICAgICAgICAgICAgICAgPGJvb2xlYW4+CiNzZXQgdmFycyhtb2RlbF9nZW4sbm9faG9sZF92aWV3KSAgICAgICAgICAgICA8Ym9vbGVhbj4KI3NldCB2YXJzKG1vZGVsX2dlbixtaW5faW5zdCkgICAgICAgICAgICAgICAgIDxpbnRlZ2VyPgoKUHV0cyAiPEZGPiBGaW5pc2hlZCBsb2FkaW5nIHNldHVwLnRjbCIK