LyoKICogSFRNTCBIZWxwIHJlc291cmNlcwogKiBIdW5nYXJpYW4gTGFuZ3VhZ2UgU3VwcG9ydAogKgogKiBDb3B5cmlnaHQgMjAwNiBBbmRyYXMgS292YWNzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJyZXNvdXJjZS5oIgoKTEFOR1VBR0UgTEFOR19IVU5HQVJJQU4sIFNVQkxBTkdfREVGQVVMVAoKU1RSSU5HVEFCTEUKQkVHSU4KICAgIElEU19DT05URU5UUyAgICAgIiZUYXJ0YWxvbSIKICAgIElEU19JTkRFWCAgICAgICAgIkkmbmRleCIKICAgIElEU19TRUFSQ0ggICAgICAgIiZLZXJlc+lzIgogICAgSURTX0ZBVk9SSVRFUyAgICAiS2VkdmVuJmNlayIKRU5ECgpTVFJJTkdUQUJMRQpCRUdJTgogICAgSURUQl9FWFBBTkQgICAgICAiTWVnamVsZW7tdOlzIgogICAgSURUQl9DT05UUkFDVCAgICAiRWxyZWp06XMiCiAgICBJRFRCX1NUT1AgICAgICAgICJNZWfhbGztdOFzIgogICAgSURUQl9SRUZSRVNIICAgICAiRnJpc3PtdOlzIgogICAgSURUQl9CQUNLICAgICAgICAiVmlzc3phIgogICAgSURUQl9IT01FICAgICAgICAiS2V6ZPVsYXAiCiAgICBJRFRCX1NZTkMgICAgICAgICJTemluay4iCiAgICBJRFRCX1BSSU5UICAgICAgICJOeW9tdGF04XMiCiAgICBJRFRCX09QVElPTlMgICAgICJPcGNp82siCiAgICBJRFRCX0ZPUldBUkQgICAgICJFbPVyZSIKICAgIElEVEJfTk9URVMgICAgICAgIklEVEJfTk9URVMiCiAgICBJRFRCX0JST1dTRV9GV0QgICJJRFRCX0JST1dTRV9GV0QiCiAgICBJRFRCX0JST1dTRV9CQUNLICJJRFRfQlJPV1NFX0JBQ0siCiAgICBJRFRCX0NPTlRFTlRTICAgICJJRFRCX0NPTlRFTlRTIgogICAgSURUQl9JTkRFWCAgICAgICAiSURUQl9JTkRFWCIKICAgIElEVEJfU0VBUkNIICAgICAgIklEVEJfU0VBUkNIIgogICAgSURUQl9ISVNUT1JZICAgICAiSURUQl9ISVNUT1JZIgogICAgSURUQl9GQVZPUklURVMgICAiSURUQl9GQVZPUklURVMiCiAgICBJRFRCX0pVTVAxICAgICAgICJKdW1wMSIKICAgIElEVEJfSlVNUDIgICAgICAgIkp1bXAyIgogICAgSURUQl9DVVNUT01JWkUgICAiVGVzdHJlc3phYuFzIgogICAgSURUQl9aT09NICAgICAgICAiWm9vbSIKICAgIElEVEJfVE9DX05FWFQgICAgIklEVEJfVE9DX05FWFQiCiAgICBJRFRCX1RPQ19QUkVWICAgICJJRFRCX1RPQ19QUkVWIgpFTkQK