LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0IEFt6XJpY28gSm9z6SBNZWxvCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCgovKiBNZW51ICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CglQT1BVUCAiJkFycXVpdm8iICB7CgkJTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiICwJCQlJRF9BQ1RJVkFURQoJCU1FTlVJVEVNICImTW92ZXIuLi5cdEY3IiAsIAkJCUlEX0ZJTEVfTU9WRQoJCU1FTlVJVEVNICImQ29waWFyLi4uXHRGOCIgLAkJCUlEX0ZJTEVfQ09QWQoJCU1FTlVJVEVNICImSW4gQ2xpcGJvYXJkLi4uXHRGOSIgLAkJMTE4CgkJTUVOVUlURU0gIkUmeGNsdWlyXHREZWwiICwJCQlJRF9GSUxFX0RFTEVURQoJCU1FTlVJVEVNICJSZSZub21lYXIuLi4iICwJCQkxMDkKCQlNRU5VSVRFTSAiJlByb3ByaWVkYWRlcy4uLlx0QWx0K0VudGVyIiAsIElEX0VESVRfUFJPUEVSVElFUwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDJm9tcHJpbWlyLi4uIiAsCQkxMTkKCQlNRU5VSVRFTSAiRGVzY29tcHJpbWlyLi4uIiAsCQkxMjAKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiRXhlY3UmdGFyLi4uIiAsCQkJSURfRVhFQ1VURQoJCU1FTlVJVEVNICImSW1wcmltaXIuLi4iICwgCQkJMTAyCgkJTUVOVUlURU0gIkEmc3NvY2lhci4uLiIgLAkJMTAzCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkNyaSZhciBwYXN0YS4uLiIgLAkJCTExMQoJCU1FTlVJVEVNICJQJmVzcXVpc2FyLi4uIiAsCQkJMTA0CgkJTUVOVUlURU0gIlNlbGVjaW9uYXIgYXJxdWkmdm9zLi4uIiAsCQkJMTE2CgkJTUVOVUlURU0gU0VQQVJBVE9SCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKCQlNRU5VSVRFTSAiU2FpJnJcdEFsdCtYIiAsIAkJCUlEX0ZJTEVfRVhJVAojZWxzZQoJCU1FTlVJVEVNICJTYWkmciIsIAkJCQlJRF9GSUxFX0VYSVQKI2VuZGlmCgl9CgoJUE9QVVAgIiZEaXNjbyIgIHsKCQlNRU5VSVRFTSAiJkNvcGlhciBkaXNjby4uLiIgLAkJCTIwMQoJCU1FTlVJVEVNICImTm9tZWFyIGRpc2NvLi4uIiAsCQkJMjAyCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZGb3JtYXRhciBkaXNjby4uLiIgLAkJCUlEX0ZPUk1BVF9ESVNLCiNpZmRlZiBfV0lOOTUKCQlNRU5VSVRFTSAiJkdlcmFyIGRpc2NvIGRlIHNpc3RlbWEuLi4iLCAtMQkvKkBAICovCiNlbmRpZgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDb25lY3RhJnIgdW5pZGFkZSBkZSByZWRlIiAsCQkJSURfQ09OTkVDVF9ORVRXT1JLX0RSSVZFCgkJTUVOVUlURU0gIiZEZXNjb25lY3RhciB1bmlkYWRlIGRlIHJlZGUiICwJCUlEX0RJU0NPTk5FQ1RfTkVUV09SS19EUklWRQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDJm9tcGFydGlsaGFyIGNvbW8uLi4iICwJCQkyNTQKCQlNRU5VSVRFTSAiJlJlbW92ZXIgY29tcGFydGlsaGFtZW50by4uLiIgLAkJCTI1NQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJTZWxlY2lvbmFyICZ1bmlkYWRlLi4uIiAsCQkJMjUxCgl9CgoJUE9QVVAgIsEmcnZvcmUiICB7CgkJTUVOVUlURU0gIiZQcvN4aW1vIG7tdmVsXHQrIiAsCQkJMzAxCgkJTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIgLAkJMzAyCgkJTUVOVUlURU0gIkV4cGFuZGlyICZ0dWRvXHRTdHJnKyoiICwJCTMwMwoJCU1FTlVJVEVNICJSZWNvbGhlciBwJmFzdGFcdC0iICwJCQkzMDQKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkluZGljYXIgc3Vibu12ZWlzIiAsCQkJCTUwNQoJfQoKCVBPUFVQICImRXhpYmlyIiAgewoJCU1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiICwJCQk0MTMKCQlNRU5VSVRFTSAiUyZvbWVudGUg4XJ2b3JlIiAsCQkJNDExCgkJTUVOVUlURU0gIlNvJm1lbnRlIHBhc3RhIiAsCQkJNDEyCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZEaXZpZGlyIiAsCQkJSURfVklFV19TUExJVAoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImTm9tZSIgLAkJCUlEX1ZJRVdfTkFNRQoJCU1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiICwJCQkJSURfVklFV19BTExfQVRUUklCVVRFUywgQ0hFQ0tFRAoJCU1FTlVJVEVNICJEJmV0YWxoZXMgcGFyY2lhaXMuLi4iICwJCQlJRF9WSUVXX1NFTEVDVEVEX0FUVFJJQlVURVMKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkNsYXNzaWZpY2FyIHBvciBub21lIiAsCQlJRF9WSUVXX1NPUlRfTkFNRQoJCU1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iICwJCUlEX1ZJRVdfU09SVF9UWVBFCgkJTUVOVUlURU0gIkNsJmFzc2lmaWNhciBwb3IgdGFtYW5obyIgLCAJCUlEX1ZJRVdfU09SVF9TSVpFCgkJTUVOVUlURU0gIkNsYSZzc2lmaWNhciBwb3IgJmRhdGEiICwgCQlJRF9WSUVXX1NPUlRfREFURQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiAsCQkJSURfVklFV19GSUxURVIKCX0KCglQT1BVUCAiJk9w5/VlcyIgIHsKCQlNRU5VSVRFTSAiJkNvbmZpcm1h5+NvLi4uIiAsCQk1MDEKCQlNRU5VSVRFTSAiJkZvbnRlLi4uIiAsCQkJSURfU0VMRUNUX0ZPTlQKCQlNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIgLCA1MTIKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQmFycmEgZCZlIGZlcnJhbWVudGFzIiAsCQlJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECgkJTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIgLAkJSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKCQlNRU5VSVRFTSAiQiZhcnJhIGRlICZzdGF0dXMiICwJSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJUZWxhIENoZWlhXHRDdHJsK1NoaWZ0K1MiICwgCUlEX1ZJRVdfRlVMTFNDUkVFTgojZW5kaWYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJk1pbmltaXphciBkdXJhbnRlIG8gdXNvIiAsCQk1MDQKCQlNRU5VSVRFTSAiJlNhbHZhciBjb25maWd1cmHn9WVzIGFvIHNhaXIiICwJCQk1MTEKCX0KCgoJUE9QVVAgIiZTZWd1cmFu52EiICB7CgkJTUVOVUlURU0gIiZBY2Vzc28uLi4iICwJCTYwNQoJCU1FTlVJVEVNICImTG9nZ2luZy4uLiIgLAkJCTYwNgoJCU1FTlVJVEVNICImT3duZXIuLi4iICwJCTYwNwoJfQoKCVBPUFVQICImSmFuZWxhIiAgewoJCU1FTlVJVEVNICImTm92YSBqYW5lbGEiICwJCQlJRF9XSU5ET1dfTkVXCgkJTUVOVUlURU0gIiZFbSBjYXNjYXRhXHRDdHJsK0Y1IiAsCQlJRF9XSU5ET1dfQ0FTQ0FERQoJCU1FTlVJVEVNICJMYWRvIGEgbGFkbyAmaG9yaXpvbnRhbG1lbnRlIiAsCQlJRF9XSU5ET1dfVElMRV9IT1JaCgkJTUVOVUlURU0gIkxhZG8gYSBsYWRvICZ2ZXJ0aWNhbG1lbnRlXHRDdHJsK0Y0IiAsCQlJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKCQlNRU5VSVRFTSAiT3JnYW5pemFyIGF1dG9tYXRpY2FtZW50ZSIgLAkJSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgoJCU1FTlVJVEVNICImT3JnYW5pemFyIO1jb25lcyIgLAkJSURfV0lORE9XX0FSUkFOR0UKCQlNRU5VSVRFTSAiJkF0dWFsaXphclx0RjUiICwJCUlEX1JFRlJFU0gKCX0KCglQT1BVUCAiQWomdWRhIiAgewoJCU1FTlVJVEVNICImVPNwaWNvcyBkYSBhanVkYVx0RjEiICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIlBlc3F1aXNhci4uLiIgLAkJCUlEX0hFTFAKCQlNRU5VSVRFTSAiJlVzYW5kbyBhIGFqdWRhIiAsCQkJSURfSEVMUF9VU0lORwoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImU29icmUgbyBXaW5lZmlsZS4uLiIgLAkJCUlEX0FCT1VUCgkJTUVOVUlURU0gIlNvYnJlIG8gJldpbmUuLi4iICwJCQlJRF9BQk9VVF9XSU5FCgl9Cn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpJRE1fV0lORUZJTEUgTUVOVSBGSVhFRCBJTVBVUkUKewoJUE9QVVAgIiZGaWNoZWlybyIgIHsKCQlNRU5VSVRFTSAiQSZicmlyXHRFbnRlciIgLAkJCUlEX0FDVElWQVRFCgkJTUVOVUlURU0gIiZNb3Zlci4uLlx0RjciICwgCQkJSURfRklMRV9NT1ZFCgkJTUVOVUlURU0gIiZDb3BpYXIuLi5cdEY4IiAsCQkJSURfRklMRV9DT1BZCgkJTUVOVUlURU0gIiZOYSBBcmVhIGRlIFRyYW5zZmVyZW5jaWEuLi5cdEY5IiAsCQkxMTgKCQlNRU5VSVRFTSAiRSZ4Y2x1aXJcdERlbCIgLAkJCUlEX0ZJTEVfREVMRVRFCgkJTUVOVUlURU0gIlJlJm5vbWVhci4uLiIgLAkJCTEwOQoJCU1FTlVJVEVNICImUHJvcHJpZWRhZGVzLi4uXHRBbHQrRW50ZXIiICwgSURfRURJVF9QUk9QRVJUSUVTCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkMmb21wcmltaXIuLi4iICwJCTExOQoJCU1FTlVJVEVNICImRGVzY29tcHJpbWlyLi4uIiAsCQkxMjAKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiRXhlY3UmdGFyLi4uIiAsCQkJSURfRVhFQ1VURQoJCU1FTlVJVEVNICImSW1wcmltaXIuLi4iICwgCQkJMTAyCgkJTUVOVUlURU0gIkEmc3NvY2lhci4uLiIgLAkJMTAzCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIkNyaSZhciBwYXN0YS4uLiIgLAkJCTExMQoJCU1FTlVJVEVNICJQJmVzcXVpc2FyLi4uIiAsCQkJMTA0CgkJTUVOVUlURU0gIlNlbGVjaW9uYXIgZmljaGVpJnJvcy4uLiIgLAkJCTExNgoJCU1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCgkJTUVOVUlURU0gIlNhaSZyXHRBbHQrWCIgLCAJCQlJRF9GSUxFX0VYSVQKI2Vsc2UKCQlNRU5VSVRFTSAiU2FpJnIiLCAJCQkJSURfRklMRV9FWElUCiNlbmRpZgoJfQoKCVBPUFVQICImRGlzY28iICB7CgkJTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iICwJCQkyMDEKCQlNRU5VSVRFTSAiJk5vbWVhciBkaXNjby4uLiIgLAkJCTIwMgoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImRm9ybWF0YXIgZGlzY28uLi4iICwJCQlJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CgkJTUVOVUlURU0gIiZHZXJhciBkaXNjbyBkZSBzaXN0ZW1hLi4uIiwgLTEJLypAQCAqLwojZW5kaWYKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQ29uZWN0YSZyIHVuaWRhZGUgZGUgcmVkZSIgLAkJCUlEX0NPTk5FQ1RfTkVUV09SS19EUklWRQoJCU1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIiAsCQlJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJlBhcnRpbGhhciBjb21vLi4uIiAsCQkJMjU0CgkJTUVOVUlURU0gIiZSZW1vdmVyIHBhcnRpbGhhLi4uIiAsCQkJMjU1CgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIlNlbGVjY2lvbmFyICZ1bmlkYWRlLi4uIiAsCQkJMjUxCgl9CgoJUE9QVVAgIsEmcnZvcmUiICB7CgkJTUVOVUlURU0gIiZQcvN4aW1vIG7tdmVsXHQrIiAsCQkJMzAxCgkJTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIgLAkJMzAyCgkJTUVOVUlURU0gIkV4cGFuZGlyICZ0dWRvXHRTdHJnKyoiICwJCTMwMwoJCU1FTlVJVEVNICJSZWNvbGhlciBwJmFzdGFcdC0iICwJCQkzMDQKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkluZGljYXIgc3Vibu12ZWlzIiAsCQkJCTUwNQoJfQoKCVBPUFVQICImRXhpYmlyIiAgewoJCU1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiICwJCQk0MTMKCQlNRU5VSVRFTSAiUyZvbWVudGUg4XJ2b3JlIiAsCQkJNDExCgkJTUVOVUlURU0gIlNvJm1lbnRlIHBhc3RhIiAsCQkJNDEyCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZEaXZpZGlyIiAsCQkJSURfVklFV19TUExJVAoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICImTm9tZSIgLAkJCUlEX1ZJRVdfTkFNRQoJCU1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiICwJCQkJSURfVklFV19BTExfQVRUUklCVVRFUywgQ0hFQ0tFRAoJCU1FTlVJVEVNICJEJmV0YWxoZXMgcGFyY2lhaXMuLi4iICwJCQlJRF9WSUVXX1NFTEVDVEVEX0FUVFJJQlVURVMKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiJkNsYXNzaWZpY2FyIHBvciBub21lIiAsCQlJRF9WSUVXX1NPUlRfTkFNRQoJCU1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iICwJCUlEX1ZJRVdfU09SVF9UWVBFCgkJTUVOVUlURU0gIkNsJmFzc2lmaWNhciBwb3IgdGFtYW5obyIgLCAJCUlEX1ZJRVdfU09SVF9TSVpFCgkJTUVOVUlURU0gIkNsYSZzc2lmaWNhciBwb3IgJmRhdGEiICwgCQlJRF9WSUVXX1NPUlRfREFURQoJCU1FTlVJVEVNIFNFUEFSQVRPUgoJCU1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiAsCQkJSURfVklFV19GSUxURVIKCX0KCglQT1BVUCAiJk9w5/VlcyIgIHsKCQlNRU5VSVRFTSAiJkNvbmZpcm1h5+NvLi4uIiAsCQk1MDEKCQlNRU5VSVRFTSAiJkZvbnRlLi4uIiAsCQkJSURfU0VMRUNUX0ZPTlQKCQlNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIgLCA1MTIKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQmFycmEgZCZlIGZlcnJhbWVudGFzIiAsCQlJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECgkJTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIgLAkJSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKCQlNRU5VSVRFTSAiQiZhcnJhIGRlIGUmc3RhZG8iICwJSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwoJCU1FTlVJVEVNICJFY3LjIENvbXBsZWN0b1x0Q3RybCtTaGlmdCtTIiAsIAlJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCgkJTUVOVUlURU0gU0VQQVJBVE9SCgkJTUVOVUlURU0gIiZNaW5pbWl6YXIgZHVyYW50ZSBvIHVzbyIgLAkJNTA0CgkJTUVOVUlURU0gIiZHcmF2YXIgY29uZmlndXJh5/VlcyBhbyBzYWlyIiAsCQkJNTExCgl9CgoKCVBPUFVQICImU2VndXJhbudhIiAgewoJCU1FTlVJVEVNICImQWNlc3NvLi4uIiAsCQk2MDUKCQlNRU5VSVRFTSAiJkxvZ2dpbmcuLi4iICwJCQk2MDYKCQlNRU5VSVRFTSAiJkRvbm8uLi4iICwJCTYwNwoJfQoKCVBPUFVQICImSmFuZWxhIiAgewoJCU1FTlVJVEVNICImTm92YSBqYW5lbGEiICwJCQlJRF9XSU5ET1dfTkVXCgkJTUVOVUlURU0gIiZFbSBjYXNjYXRhXHRDdHJsK0Y1IiAsCQlJRF9XSU5ET1dfQ0FTQ0FERQoJCU1FTlVJVEVNICJMYWRvIGEgbGFkbyAmaG9yaXpvbnRhbG1lbnRlIiAsCQlJRF9XSU5ET1dfVElMRV9IT1JaCgkJTUVOVUlURU0gIkxhZG8gYSBsYWRvICZ2ZXJ0aWNhbG1lbnRlXHRDdHJsK0Y0IiAsCQlJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKCQlNRU5VSVRFTSAiT3JnYW5pemFyIGF1dG9tYXRpY2FtZW50ZSIgLAkJSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgoJCU1FTlVJVEVNICImT3JnYW5pemFyIO1jb25lcyIgLAkJSURfV0lORE9XX0FSUkFOR0UKCQlNRU5VSVRFTSAiJkFjdHVhbGl6YXJcdEY1IiAsCQlJRF9SRUZSRVNICgl9CgoJUE9QVVAgIkFqJnVkYSIgIHsKCQlNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiAsCQkJSURfSEVMUAoJCU1FTlVJVEVNICJQZXNxdWlzYXIuLi4iICwJCQlJRF9IRUxQCgkJTUVOVUlURU0gIiZVc2FuZG8gYSBhanVkYSIgLAkJCUlEX0hFTFBfVVNJTkcKCQlNRU5VSVRFTSBTRVBBUkFUT1IKCQlNRU5VSVRFTSAiQWNlcmNhIGRvICZXaW5lLi4uIiAsCQkJSURfQUJPVVRfV0lORQoJfQp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9FWEVDVVRFIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkV4ZWN1dGFyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKCUNPTlRST0wgCQkiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCglDT05UUk9MIAkJIiZDb21hbmRvOiIgLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCglFRElUVEVYVAkJMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKCUNPTlRST0wgCQkiJk1pbmltaXphZG8iICwgMjE0LCAiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1AsMywgNDUsIDcxLCAxMgoJREVGUFVTSEJVVFRPTgkiT0siICwgMSwgMTU4LCA2LCA0NywgMTQKCVBVU0hCVVRUT04JCSJDYW5jZWxhciIgLCAyLCAxNTgsIDIzLCA0NywgMTQKCVBVU0hCVVRUT04JCSImQWp1ZGEiICwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTZWxlY2lvbmFyIGRlc3Rpbm8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewoJQ09OVFJPTCAJIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAoJQ09OVFJPTCAJIiZDYW1pbmhvOiIgLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCglFRElUVEVYVAkyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAoJREVGUFVTSEJVVFRPTgkiT0siICwgMSwgMTU4LCA2LCA0NywgMTQKCVBVU0hCVVRUT04JIkNhbmNlbGFyIiAsIDIsIDE1OCwgMjMsIDQ3LCAxNAoJUFVTSEJVVFRPTgkiJlByb2N1cmFyIiAsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KClNUUklOR1RBQkxFCnsKCUlEU19GT05UX1NFTF9ETEdfTkFNRQkiQXBsaWNhbmRvIGNvbmZpZ3VyYef1ZXMgZGUgZm9udGUiCglJRFNfRk9OVF9TRUxfRVJST1IJIkVycm8gZW5xdWFudG8gc2VsZWNpb25hIG5vdmEgZm9udGUuIgp9CgpTVFJJTkdUQUJMRQp7CiBJRFNfV0lORUZJTEUgIldpbmVmaWxlIgogSURTX0VSUk9SICAiRXJybyIKIElEU19ST09UX0ZTICAicm9vdCBmcyIKIElEU19VTklYRlMgICJ1bml4ZnMiCiBJRFNfREVTS1RPUCAgIsFyZWEgZGUgdHJhYmFsaG8iCiBJRFNfU0hFTEwgICJTaGVsbCIKIElEU19USVRMRUZNVCAiJXMgLSAlcyIKIElEU19OT19JTVBMICAiQWluZGEgbuNvIGltcGxlbWVudGFkbyIKIElEU19XSU5FICAiV0lORSIKIElEU19XSU5FX0ZJTEUgIldpbmUgRmlsZSIKfQoKU1RSSU5HVEFCTEUKewogSURTX0NPTF9OQU1FICJOb21lIgogSURTX0NPTF9TSVpFICJUYW1hbmhvIgogSURTX0NPTF9DREFURSAiQ0RhdGEiCiBJRFNfQ09MX0FEQVRFICJBRGF0YSIKIElEU19DT0xfTURBVEUgIk1EYXRhIgogSURTX0NPTF9JRFggICJJbmRleC9Jbm9kZSIKIElEU19DT0xfTElOS1MgIkxpZ2Hn9WVzIgogSURTX0NPTF9BVFRSICJBdHJpYnV0b3MiCiBJRFNfQ09MX1NFQyAgIlNlZ3VyYW7nYSIKfQo=