LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCgovKiBNZW51ICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CglQT1BVUCAiJkFycXVpdm8iICB7CgkJTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiICwJCQlJRF9BQ1RJVkFURQoJCU1FTlVJVEVNICImTW92ZXIuLi5cdEY3IiAsIAkJCUlEX0ZJTEVfTU9WRQoJCU1FTlVJVEVNICImQ29waWFyLi4uXHRGOCIgLAkJCTEwNwoJCU1FTlVJVEVNICImSW4gQ2xpcGJvYXJkLi4uXHRGOSIgLAkJMTE4CgkJTUVOVUlURU0gIkUmeGNsdWlyXHREZWwiICwJCQkxMDgKCQlNRU5VSVRFTSAiUmUmbm9tZWFyLi4uIiAsCQkJMTA5CgkJTUVOVUlURU0gIiZQcm9wcmllZGFkZXMuLi5cdEFsdCtFbnRlciIgLCBJRF9FRElUX1BST1BFUlRJRVMKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQyZvbXByaW1pci4uLiIgLAkJMTE5CgkJTUVOVUlURU0gIkRlc2NvbXByaW1pci4uLiIgLAkJMTIwCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkV4ZWN1JnRhci4uLiIgLAkJCUlEX0VYRUNVVEUKCQlNRU5VSVRFTSAiJkltcHJpbWlyLi4uIiAsIAkJCTEwMgoJCU1FTlVJVEVNICJBJnNzb2NpYXIuLi4iICwJCTEwMwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDcmkmYXIgcGFzdGEuLi4iICwJCQkxMTEKCQlNRU5VSVRFTSAiUCZlc3F1aXNhci4uLiIgLAkJCTEwNAoJCU1FTlVJVEVNICJTZWxlY2lvbmFyIGFycXVpJnZvcy4uLiIgLAkJCTExNgoJCU1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIlNhaSZyXHRBbHQrWCIgLCAJCQlJRF9GSUxFX0VYSVQKI2Vsc2UKCQlNRU5VSVRFTSAiU2FpJnIiLCAJCQkJSURfRklMRV9FWElUCiNlbmRpZgoJfQoKCVBPUFVQICImRGlzY28iICB7CgkJTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iICwJCQkyMDEKCQlNRU5VSVRFTSAiJk5vbWVhciBkaXNjby4uLiIgLAkJCTIwMgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImRm9ybWF0YXIgZGlzY28uLi4iICwJCQlJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CgkJTUVOVUlURU0gIiZHZXJhciBkaXNjbyBkZSBzaXN0ZW1hLi4uIiwgLTEJLypAQCAqLwojZW5kaWYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQ29uZWN0YSZyIHVuaWRhZGUgZGUgcmVkZSIgLAkJCUlEX0NPTk5FQ1RfTkVUV09SS19EUklWRQoJCU1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIiAsCQlJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQyZvbXBhcnRpbGhhciBjb21vLi4uIiAsCQkJMjU0CgkJTUVOVUlURU0gIiZSZW1vdmVyIGNvbXBhcnRpbGhhbWVudG8uLi4iICwJCQkyNTUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiU2VsZWNpb25hciAmdW5pZGFkZS4uLiIgLAkJCTI1MQoJfQoKCVBPUFVQICLBJnJ2b3JlIiAgewoJCU1FTlVJVEVNICImUHLzeGltbyBu7XZlbFx0KyIgLAkJCTMwMQoJCU1FTlVJVEVNICJFeHBhbmRpJnIgcGFzdGFcdCoiICwJCTMwMgoJCU1FTlVJVEVNICJFeHBhbmRpciAmdHVkb1x0U3RyZysqIiAsCQkzMDMKCQlNRU5VSVRFTSAiUmVjb2xoZXIgcCZhc3RhXHQtIiAsCQkJMzA0CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZJbmRpY2FyIHN1Ym7tdmVpcyIgLAkJCQk1MDUKCX0KCglQT1BVUCAiJkV4aWJpciIgIHsKCQlNRU5VSVRFTSAiwSZydm9yZSBlIHBhc3RhIiAsCQkJNDEzCgkJTUVOVUlURU0gIlMmb21lbnRlIOFydm9yZSIgLAkJCTQxMQoJCU1FTlVJVEVNICJTbyZtZW50ZSBwYXN0YSIgLAkJCTQxMgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImRGl2aWRpciIgLAkJCTQxNAoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImTm9tZSIgLAkJCUlEX1ZJRVdfTkFNRQoJCU1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiICwJCQkJSURfVklFV19BTExfQVRUUklCVVRFUywgQ0hFQ0tFRAoJCU1FTlVJVEVNICJEJmV0YWxoZXMgcGFyY2lhaXMuLi4iICwJCQlJRF9WSUVXX1NFTEVDVEVEX0FUVFJJQlVURVMKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkNsYXNzaWZpY2FyIHBvciBub21lIiAsCQlJRF9WSUVXX1NPUlRfTkFNRQoJCU1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iICwJCUlEX1ZJRVdfU09SVF9UWVBFCgkJTUVOVUlURU0gIkNsJmFzc2lmaWNhciBwb3IgdGFtYW5obyIgLCAJCUlEX1ZJRVdfU09SVF9TSVpFCgkJTUVOVUlURU0gIkNsYSZzc2lmaWNhciBwb3IgJmRhdGEiICwgCQlJRF9WSUVXX1NPUlRfREFURQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiAsCQkJNDA5Cgl9CgoJUE9QVVAgIiZPcOf1ZXMiICB7CgkJTUVOVUlURU0gIiZDb25maXJtYefjby4uLiIgLAkJLTEKCQlNRU5VSVRFTSAiJkZvbnRlLi4uIiAsCQkJSURfU0VMRUNUX0ZPTlQKCQlNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIgLCAtMQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJCYXJyYSBkJmUgZmVycmFtZW50YXMiICwJCUlEX1ZJRVdfVE9PTF9CQVIsIENIRUNLRUQKCQlNRU5VSVRFTSAiJkJhcnJhIGRlIHVuaWRhZGVzIiAsCQlJRF9WSUVXX0RSSVZFX0JBUiwgQ0hFQ0tFRAoJCU1FTlVJVEVNICJCJmFycmEgZGUgJnN0YXR1cyIgLAlJRF9WSUVXX1NUQVRVU0JBUiwgQ0hFQ0tFRAojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIlRlbGEgQ2hlaWFcdEN0cmwrU2hpZnQrUyIgLCAJSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImTWluaW1pemFyIGR1cmFudGUgbyB1c28iICwJCS0xCgkJTUVOVUlURU0gIiZTYWx2YXIgY29uZmlndXJh5/VlcyBhbyBzYWlyIiAsCQkJNTExCgl9CgoKCVBPUFVQICImU2VndXJhbudhIiAgewoJCU1FTlVJVEVNICImQWNlc3NvLi4uIiAsCQk2MDUKCQlNRU5VSVRFTSAiJkxvZ2dpbmcuLi4iICwJCQk2MDYKCQlNRU5VSVRFTSAiJk93bmVyLi4uIiAsCQk2MDcKCX0KCglQT1BVUCAiJkphbmVsYSIgIHsKCQlNRU5VSVRFTSAiJk5vdmEgamFuZWxhIiAsCQkJSURfV0lORE9XX05FVwoJCU1FTlVJVEVNICImRW0gY2FzY2F0YVx0Q3RybCtGNSIgLAkJSURfV0lORE9XX0NBU0NBREUKCQlNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJmhvcml6b250YWxtZW50ZSIgLAkJSURfV0lORE9XX1RJTEVfSE9SWgoJCU1FTlVJVEVNICJMYWRvIGEgbGFkbyAmdmVydGljYWxtZW50ZVx0Q3RybCtGNCIgLAkJSURfV0lORE9XX1RJTEVfVkVSVAojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIk9yZ2FuaXphciBhdXRvbWF0aWNhbWVudGUiICwJCUlEX1dJTkRPV19BVVRPU09SVAojZW5kaWYKCQlNRU5VSVRFTSAiJk9yZ2FuaXphciDtY29uZXMiICwJCUlEX1dJTkRPV19BUlJBTkdFCgkJTUVOVUlURU0gIiZBdHVhbGl6YXJcdEY1IiAsCQlJRF9SRUZSRVNICgl9CgoJUE9QVVAgIkFqJnVkYSIgIHsKCQlNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiAsCQkJSURfSEVMUAoJCU1FTlVJVEVNICJQZXNxdWlzYXIuLi4iICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIiZVc2FuZG8gYSBhanVkYSIgLAkJCUlEX0hFTFBfVVNJTkcKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlQT1BVUCAiJkluZm9ybWHn9WVzLi4uIiAgewoJCSAgTUVOVUlURU0gIlNvYnJlIG8gJldpbmUuLi4iICwJCQlJRF9BQk9VVF9XSU5FCi8qCiAqCQkgIE1FTlVJVEVNICImTGljZW5zZS4uLiIJCUlEX0xJQ0VOU0UKICoJCSAgTUVOVUlURU0gIiZOTyBXQVJSQU5UWSIJCUlEX05PX1dBUlJBTlRZCiAqLwoJCX0KCX0KfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CglQT1BVUCAiJkZpY2hlaXJvIiAgewoJCU1FTlVJVEVNICJBJmJyaXJcdEVudGVyIiAsCQkJSURfQUNUSVZBVEUKCQlNRU5VSVRFTSAiJk1vdmVyLi4uXHRGNyIgLCAJCQlJRF9GSUxFX01PVkUKCQlNRU5VSVRFTSAiJkNvcGlhci4uLlx0RjgiICwJCQkxMDcKCQlNRU5VSVRFTSAiJk5hIEFyZWEgZGUgVHJhbnNmZXJlbmNpYS4uLlx0RjkiICwJCTExOAoJCU1FTlVJVEVNICJFJnhjbHVpclx0RGVsIiAsCQkJMTA4CgkJTUVOVUlURU0gIlJlJm5vbWVhci4uLiIgLAkJCTEwOQoJCU1FTlVJVEVNICImUHJvcHJpZWRhZGVzLi4uXHRBbHQrRW50ZXIiICwgSURfRURJVF9QUk9QRVJUSUVTCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkMmb21wcmltaXIuLi4iICwJCTExOQoJCU1FTlVJVEVNICImRGVzY29tcHJpbWlyLi4uIiAsCQkxMjAKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiRXhlY3UmdGFyLi4uIiAsCQkJSURfRVhFQ1VURQoJCU1FTlVJVEVNICImSW1wcmltaXIuLi4iICwgCQkJMTAyCgkJTUVOVUlURU0gIkEmc3NvY2lhci4uLiIgLAkJMTAzCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkNyaSZhciBwYXN0YS4uLiIgLAkJCTExMQoJCU1FTlVJVEVNICJQJmVzcXVpc2FyLi4uIiAsCQkJMTA0CgkJTUVOVUlURU0gIlNlbGVjaW9uYXIgZmljaGVpJnJvcy4uLiIgLAkJCTExNgoJCU1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIlNhaSZyXHRBbHQrWCIgLCAJCQlJRF9GSUxFX0VYSVQKI2Vsc2UKCQlNRU5VSVRFTSAiU2FpJnIiLCAJCQkJSURfRklMRV9FWElUCiNlbmRpZgoJfQoKCVBPUFVQICImRGlzY28iICB7CgkJTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iICwJCQkyMDEKCQlNRU5VSVRFTSAiJk5vbWVhciBkaXNjby4uLiIgLAkJCTIwMgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImRm9ybWF0YXIgZGlzY28uLi4iICwJCQlJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CgkJTUVOVUlURU0gIiZHZXJhciBkaXNjbyBkZSBzaXN0ZW1hLi4uIiwgLTEJLypAQCAqLwojZW5kaWYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQ29uZWN0YSZyIHVuaWRhZGUgZGUgcmVkZSIgLAkJCUlEX0NPTk5FQ1RfTkVUV09SS19EUklWRQoJCU1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIiAsCQlJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJlBhcnRpbGhhciBjb21vLi4uIiAsCQkJMjU0CgkJTUVOVUlURU0gIiZSZW1vdmVyIHBhcnRpbGhhLi4uIiAsCQkJMjU1CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIlNlbGVjY2lvbmFyICZ1bmlkYWRlLi4uIiAsCQkJMjUxCgl9CgoJUE9QVVAgIsEmcnZvcmUiICB7CgkJTUVOVUlURU0gIiZQcvN4aW1vIG7tdmVsXHQrIiAsCQkJMzAxCgkJTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIgLAkJMzAyCgkJTUVOVUlURU0gIkV4cGFuZGlyICZ0dWRvXHRTdHJnKyoiICwJCTMwMwoJCU1FTlVJVEVNICJSZWNvbGhlciBwJmFzdGFcdC0iICwJCQkzMDQKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkluZGljYXIgc3Vibu12ZWlzIiAsCQkJCTUwNQoJfQoKCVBPUFVQICImRXhpYmlyIiAgewoJCU1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiICwJCQk0MTMKCQlNRU5VSVRFTSAiUyZvbWVudGUg4XJ2b3JlIiAsCQkJNDExCgkJTUVOVUlURU0gIlNvJm1lbnRlIHBhc3RhIiAsCQkJNDEyCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZEaXZpZGlyIiAsCQkJNDE0CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZOb21lIiAsCQkJSURfVklFV19OQU1FCgkJTUVOVUlURU0gIiZUb2RvcyBvcyBkZWxhbGhlcyIgLAkJCQlJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECgkJTUVOVUlURU0gIkQmZXRhbGhlcyBwYXJjaWFpcy4uLiIgLAkJCUlEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImQ2xhc3NpZmljYXIgcG9yIG5vbWUiICwJCUlEX1ZJRVdfU09SVF9OQU1FCgkJTUVOVUlURU0gIkMmbGFzc2lmaWNhciBwb3IgdGlwbyIgLAkJSURfVklFV19TT1JUX1RZUEUKCQlNRU5VSVRFTSAiQ2wmYXNzaWZpY2FyIHBvciB0YW1hbmhvIiAsIAkJSURfVklFV19TT1JUX1NJWkUKCQlNRU5VSVRFTSAiQ2xhJnNzaWZpY2FyIHBvciAmZGF0YSIgLCAJCUlEX1ZJRVdfU09SVF9EQVRFCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkNsYXNzaWZpY2FyICZwb3IuLi4iICwJCQk0MDkKCX0KCglQT1BVUCAiJk9w5/VlcyIgIHsKCQlNRU5VSVRFTSAiJkNvbmZpcm1h5+NvLi4uIiAsCQktMQoJCU1FTlVJVEVNICImRm9udGUuLi4iICwJCQlJRF9TRUxFQ1RfRk9OVAoJCU1FTlVJVEVNICImUGVyc29uYWxpemFyIGJhcnJhIGRlIGZlcnJhbWVudGFzLi4uIiAsIC0xCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkJhcnJhIGQmZSBmZXJyYW1lbnRhcyIgLAkJSURfVklFV19UT09MX0JBUiwgQ0hFQ0tFRAoJCU1FTlVJVEVNICImQmFycmEgZGUgdW5pZGFkZXMiICwJCUlEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECgkJTUVOVUlURU0gIkImYXJyYSBkZSBlJnN0YWRvIiAsCUlEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKCQlNRU5VSVRFTSAiRWNy4yBDb21wbGVjdG9cdEN0cmwrU2hpZnQrUyIgLCAJSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImTWluaW1pemFyIGR1cmFudGUgbyB1c28iICwJCS0xCgkJTUVOVUlURU0gIiZHcmF2YXIgY29uZmlndXJh5/VlcyBhbyBzYWlyIiAsCQkJNTExCgl9CgoKCVBPUFVQICImU2VndXJhbudhIiAgewoJCU1FTlVJVEVNICImQWNlc3NvLi4uIiAsCQk2MDUKCQlNRU5VSVRFTSAiJkxvZ2dpbmcuLi4iICwJCQk2MDYKCQlNRU5VSVRFTSAiJkRvbm8uLi4iICwJCTYwNwoJfQoKCVBPUFVQICImSmFuZWxhIiAgewoJCU1FTlVJVEVNICImTm92YSBqYW5lbGEiICwJCQlJRF9XSU5ET1dfTkVXCgkJTUVOVUlURU0gIiZFbSBjYXNjYXRhXHRDdHJsK0Y1IiAsCQlJRF9XSU5ET1dfQ0FTQ0FERQoJCU1FTlVJVEVNICJMYWRvIGEgbGFkbyAmaG9yaXpvbnRhbG1lbnRlIiAsCQlJRF9XSU5ET1dfVElMRV9IT1JaCgkJTUVOVUlURU0gIkxhZG8gYSBsYWRvICZ2ZXJ0aWNhbG1lbnRlXHRDdHJsK0Y0IiAsCQlJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKCQlNRU5VSVRFTSAiT3JnYW5pemFyIGF1dG9tYXRpY2FtZW50ZSIgLAkJSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgoJCU1FTlVJVEVNICImT3JnYW5pemFyIO1jb25lcyIgLAkJSURfV0lORE9XX0FSUkFOR0UKCQlNRU5VSVRFTSAiJkFjdHVhbGl6YXJcdEY1IiAsCQlJRF9SRUZSRVNICgl9CgoJUE9QVVAgIkFqJnVkYSIgIHsKCQlNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiAsCQkJSURfSEVMUAoJCU1FTlVJVEVNICJQZXNxdWlzYXIuLi4iICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIiZVc2FuZG8gYSBhanVkYSIgLAkJCUlEX0hFTFBfVVNJTkcKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlQT1BVUCAiJkluZm9ybWHn9WVzLi4uIiAgewoJCSAgTUVOVUlURU0gIkFjZXJjYSBkbyAmV2luZS4uLiIgLAkJCUlEX0FCT1VUX1dJTkUKLyoKICoJCSAgTUVOVUlURU0gIiZMaWNlbudhLi4uIgkJSURfTElDRU5TRQogKgkJICBNRU5VSVRFTSAiJlNFTSBHQVJBTlRJQSIJCUlEX05PX1dBUlJBTlRZCiAqLwoJCX0KCX0KfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ORVVUUkFMCgpJRERfRVhFQ1VURSBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFeGVjdXRhciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CglDT05UUk9MIAkJIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAoJQ09OVFJPTCAJCSImQ29tYW5kbzoiICwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAoJRURJVFRFWFQJCTIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCglDT05UUk9MIAkJIiZNaW5pbWl6YWRvIiAsIDIxNCwgIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QLDMsIDQ1LCA3MSwgMTIKCURFRlBVU0hCVVRUT04JIk9LIiAsIDEsIDE1OCwgNiwgNDcsIDE0CglQVVNIQlVUVE9OCQkiQ2FuY2VsYXIiICwgMiwgMTU4LCAyMywgNDcsIDE0CglQVVNIQlVUVE9OCQkiJkFqdWRhIiAsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCklERF9TRUxFQ1RfREVTVElOQVRJT04gRElBTE9HIEZJWEVEIElNUFVSRSAxNSwgMTMsIDIxMCwgNjMKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU2VsZWNpb25hciBkZXN0aW5vIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKCUNPTlRST0wgCSIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKCUNPTlRST0wgCSImQ2FtaW5obzoiICwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAoJRURJVFRFWFQJMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKCURFRlBVU0hCVVRUT04JIk9LIiAsIDEsIDE1OCwgNiwgNDcsIDE0CglQVVNIQlVUVE9OCSJDYW5jZWxhciIgLCAyLCAxNTgsIDIzLCA0NywgMTQKCVBVU0hCVVRUT04JIiZQcm9jdXJhciIgLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpTVFJJTkdUQUJMRQp7CglJRFNfRk9OVF9TRUxfRExHX05BTUUJIkFwbGljYW5kbyBjb25maWd1cmHn9WVzIGRlIGZvbnRlIgoJSURTX0ZPTlRfU0VMX0VSUk9SCSJFcnJvIGVucXVhbnRvIHNlbGVjaW9uYSBub3ZhIGZvbnRlLiIKfQoKU1RSSU5HVEFCTEUKewogSURTX1dJTkVGSUxFICJXaW5lZmlsZSIKIElEU19FUlJPUiAgIkVycm8iCiBJRFNfUk9PVF9GUyAgInJvb3QgZnMiCiBJRFNfVU5JWEZTICAidW5peGZzIgogSURTX0RFU0tUT1AgICLBcmVhIGRlIHRyYWJhbGhvIgogSURTX1NIRUxMICAiU2hlbGwiCiBJRFNfVElUTEVGTVQgIiVzIC0gJXMiCiBJRFNfTk9fSU1QTCAgIkFpbmRhIG7jbyBpbXBsZW1lbnRhZG8iCiBJRFNfV0lORSAgIldJTkUiCiBJRFNfV0lORV9GSUxFICJXaW5lIEZpbGUiCn0KClNUUklOR1RBQkxFCnsKIElEU19DT0xfTkFNRSAiTm9tZSIKIElEU19DT0xfU0laRSAiVGFtYW5obyIKIElEU19DT0xfQ0RBVEUgIkNEYXRhIgogSURTX0NPTF9BREFURSAiQURhdGEiCiBJRFNfQ09MX01EQVRFICJNRGF0YSIKIElEU19DT0xfSURYICAiSW5kZXgvSW5vZGUiCiBJRFNfQ09MX0xJTktTICJMaWdh5/VlcyIKIElEU19DT0xfQVRUUiAiQXRyaWJ1dG9zIgogSURTX0NPTF9TRUMgICJTZWd1cmFu52EiCn0K