LyoKICogSFRNTCBIZWxwIHJlc291cmNlcwogKiBDemVjaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1IEphbWVzIEhhd2tpbnMKICogQ29weXJpZ2h0IDIwMDUgRGF2aWQgS3JlZGJhCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfQ1pFQ0gsIFNVQkxBTkdfREVGQVVMVAoKU1RSSU5HVEFCTEUKQkVHSU4KICAgIElEU19DT05URU5UUyAgICAgIiZPYnNhaCIKICAgIElEU19JTkRFWCAgICAgICAgIkkmbmRleCIKICAgIElEU19TRUFSQ0ggICAgICAgIiZIbGVkYXQiCiAgICBJRFNfRkFWT1JJVEVTICAgICJPYmztJmJlbukiCkVORAoKU1RSSU5HVEFCTEUKQkVHSU4KICAgIElEVEJfRVhQQU5EICAgICAgIlJvemJhbGl0IgogICAgSURUQl9DT05UUkFDVCAgICAiU2ty/XQiCiAgICBJRFRCX1NUT1AgICAgICAgICJaYXN0YXZpdCIKICAgIElEVEJfUkVGUkVTSCAgICAgIk9ibm92aXQiCiAgICBJRFRCX0JBQ0sgICAgICAgICJacOx0IgogICAgSURUQl9IT01FICAgICAgICAiRG9t+SIKICAgIElEVEJfU1lOQyAgICAgICAgIlN5bmNocm9uaXpvdmF0IgogICAgSURUQl9QUklOVCAgICAgICAiVGlzayIKICAgIElEVEJfT1BUSU9OUyAgICAgIlZvbGJ5IgogICAgSURUQl9GT1JXQVJEICAgICAiVnD4ZWQiCiAgICBJRFRCX05PVEVTICAgICAgICJJRFRCX05PVEVTIgogICAgSURUQl9CUk9XU0VfRldEICAiSURUQl9CUk9XU0VfRldEIgogICAgSURUQl9CUk9XU0VfQkFDSyAiSURUX0JST1dTRV9CQUNLIgogICAgSURUQl9DT05URU5UUyAgICAiSURUQl9DT05URU5UUyIKICAgIElEVEJfSU5ERVggICAgICAgIklEVEJfSU5ERVgiCiAgICBJRFRCX1NFQVJDSCAgICAgICJJRFRCX1NFQVJDSCIKICAgIElEVEJfSElTVE9SWSAgICAgIklEVEJfSElTVE9SWSIKICAgIElEVEJfRkFWT1JJVEVTICAgIklEVEJfRkFWT1JJVEVTIgogICAgSURUQl9KVU1QMSAgICAgICAiU2tvazEiCiAgICBJRFRCX0pVTVAyICAgICAgICJTa29rMiIKICAgIElEVEJfQ1VTVE9NSVpFICAgIlD4aXpw+XNvYml0IgogICAgSURUQl9aT09NICAgICAgICAiTHVwYSIKICAgIElEVEJfVE9DX05FWFQgICAgIklEVEJfVE9DX05FWFQiCiAgICBJRFRCX1RPQ19QUkVWICAgICJJRFRCX1RPQ19QUkVWIgpFTkQK