LyoKICogV2luZUZpbGUKICogUG9ydHVndWVzZSBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA0LDIwMDcgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI2luY2x1ZGUgInJlc291cmNlLmgiCgovKiBNZW51ICovCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkFycXVpdm8iICB7CiAgICAgICAgTUVOVUlURU0gIkEmYnJpclx0RW50ZXIiLCAgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIiZNb3Zlci4uLlx0RjciLCAgICAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICImQ29waWFyLi4uXHRGOCIsICAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAiJkluIENsaXBib2FyZC4uLlx0RjkiLCAgICAgICAgMTE4CiAgICAgICAgTUVOVUlURU0gIkUmeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgIElEX0ZJTEVfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlJlJm5vbWVhci4uLiIsICAgICAgICAgICAgICAgIDEwOQogICAgICAgIE1FTlVJVEVNICImUHJvcHJpZWRhZGVzLi4uXHRBbHQrRW50ZXIiLCBJRF9FRElUX1BST1BFUlRJRVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQyZvbXByaW1pci4uLiIsICAgICAgICAgICAgICAgMTE5CiAgICAgICAgTUVOVUlURU0gIkRlc2NvbXByaW1pci4uLiIsICAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJFeGVjdSZ0YXIuLi4iLCAgICAgICAgICAgICAgICBJRF9FWEVDVVRFCiAgICAgICAgTUVOVUlURU0gIiZJbXByaW1pci4uLiIsICAgICAgICAgICAgICAgIDEwMgogICAgICAgIE1FTlVJVEVNICJBJnNzb2NpYXIuLi4iLCAgICAgICAgICAgICAgICAxMDMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQ3JpJmFyIHBhc3RhLi4uIiwgICAgICAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIlAmZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgIDEwNAogICAgICAgIE1FTlVJVEVNICJTZWxlY2lvbmFyIGFycXVpJnZvcy4uLiIsICAgICAxMTYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJTYWkmclx0QWx0K1giLCAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAiU2FpJnIiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRklMRV9FWElUCiNlbmRpZgogICAgfQoKICAgIFBPUFVQICImRGlzY28iICB7CiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMQogICAgICAgIE1FTlVJVEVNICImTm9tZWFyIGRpc2NvLi4uIiwgICAgICAgICAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkZvcm1hdGFyIGRpc2NvLi4uIiwgICAgICAgICAgSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQogICAgICAgIE1FTlVJVEVNICImR2VyYXIgZGlzY28gZGUgc2lzdGVtYS4uLiIsIC0xICAgLypUT0RPKi8KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNvbmVjdGEmciB1bmlkYWRlIGRlIHJlZGUiLCAgIElEX0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNICImRGVzY29uZWN0YXIgdW5pZGFkZSBkZSByZWRlIixJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQyZvbXBhcnRpbGhhciBjb21vLi4uIiwgICAgICAgMjU0CiAgICAgICAgTUVOVUlURU0gIiZSZW1vdmVyIGNvbXBhcnRpbGhhbWVudG8uLi4iLDI1NQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTZWxlY2lvbmFyICZ1bmlkYWRlLi4uIiwgICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAiwSZydm9yZSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlBy83hpbW8gbu12ZWxcdCsiLCAgICAgICAgICAgMzAxCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGkmciBwYXN0YVx0KiIsICAgICAgICAgIDMwMgogICAgICAgIE1FTlVJVEVNICJFeHBhbmRpciAmdHVkb1x0U3RyZysqIiwgICAgICAzMDMKICAgICAgICBNRU5VSVRFTSAiUmVjb2xoZXIgcCZhc3RhXHQtIiwgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZJbmRpY2FyIHN1Ym7tdmVpcyIsICAgICAgICAgIDUwNQogICAgfQoKICAgIFBPUFVQICImRXhpYmlyIiAgewogICAgICAgIE1FTlVJVEVNICLBJnJ2b3JlIGUgcGFzdGEiLCAgICAgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiUyZvbWVudGUg4XJ2b3JlIiwgICAgICAgICAgICAgNDExCiAgICAgICAgTUVOVUlURU0gIlNvJm1lbnRlIHBhc3RhIiwgICAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOb21lIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiLCAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkQmZXRhbGhlcyBwYXJjaWFpcy4uLiIsICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ2xhc3NpZmljYXIgcG9yIG5vbWUiLCAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iLCAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iLCAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiwgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiwgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImT3Dn9WVzIiAgewogICAgICAgIE1FTlVJVEVNICImQ29uZmlybWHn428uLi4iLCAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJkZvbnRlLi4uIiwgICAgICAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiJlBlcnNvbmFsaXphciBiYXJyYSBkZSBmZXJyYW1lbnRhcy4uLiIsIDUxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJCYXJyYSBkJmUgZmVycmFtZW50YXMiLCAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSB1bmlkYWRlcyIsICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkImYXJyYSBkZSAmc3RhdHVzIiwgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSLCBDSEVDS0VECiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiVGVsYSBDaGVpYVx0Q3RybCtTaGlmdCtTIiwgICAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTWluaW1pemFyIGR1cmFudGUgbyB1c28iLCAgICA1MDQKICAgICAgICBNRU5VSVRFTSAiJlNhbHZhciBjb25maWd1cmHn9WVzIGFvIHNhaXIiLDUxMQogICAgfQoKCiAgICBQT1BVUCAiJlNlZ3VyYW7nYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJkFjZXNzby4uLiIsICAgICAgICAgICAgICAgICAgNjA1CiAgICAgICAgTUVOVUlURU0gIiZMb2dnaW5nLi4uIiwgICAgICAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICImT3duZXIuLi4iLCAgICAgICAgICAgICAgICAgICA2MDcKICAgIH0KCiAgICBQT1BVUCAiJkphbmVsYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJk5vdmEgamFuZWxhIiwgICAgICAgICAgICAgICAgSURfV0lORE9XX05FVwogICAgICAgIE1FTlVJVEVNICImRW0gY2FzY2F0YVx0Q3RybCtGNSIsICAgICAgICBJRF9XSU5ET1dfQ0FTQ0FERQogICAgICAgIE1FTlVJVEVNICJMYWRvIGEgbGFkbyAmaG9yaXpvbnRhbG1lbnRlIixJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIkxhZG8gYSBsYWRvICZ2ZXJ0aWNhbG1lbnRlXHRDdHJsK0Y0IixJRF9XSU5ET1dfVElMRV9WRVJUCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAiT3JnYW5pemFyIGF1dG9tYXRpY2FtZW50ZSIsICAgSURfV0lORE9XX0FVVE9TT1JUCiNlbmRpZgogICAgICAgIE1FTlVJVEVNICImT3JnYW5pemFyIO1jb25lcyIsICAgICAgICAgICBJRF9XSU5ET1dfQVJSQU5HRQogICAgICAgIE1FTlVJVEVNICImQXR1YWxpemFyXHRGNSIsICAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIkFqJnVkYSIgIHsKICAgICAgICBNRU5VSVRFTSAiJlTzcGljb3MgZGEgYWp1ZGFcdEYxIiwgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICJQZXNxdWlzYXIuLi4iLCAgICAgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZVc2FuZG8gYSBhanVkYSIsICAgICAgICAgICAgIElEX0hFTFBfVVNJTkcKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlNvYnJlIG8gV2luZWZpbGUuLi4iLCAgICAgICAgSURfQUJPVVQKICAgIH0KfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAiJkZpY2hlaXJvIiAgewogICAgICAgIE1FTlVJVEVNICJBJmJyaXJcdEVudGVyIiwgICAgICAgICAgICAgICBJRF9BQ1RJVkFURQogICAgICAgIE1FTlVJVEVNICImTW92ZXIuLi5cdEY3IiwgICAgICAgICAgICAgICBJRF9GSUxFX01PVkUKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhci4uLlx0RjgiLCAgICAgICAgICAgICAgSURfRklMRV9DT1BZCiAgICAgICAgTUVOVUlURU0gIiZOYSBBcmVhIGRlIFRyYW5zZmVy6m5jaWEuLi5cdEY5IiwgICAgICAgIDExOAogICAgICAgIE1FTlVJVEVNICJFJnhjbHVpclx0RGVsIiwgICAgICAgICAgICAgICBJRF9GSUxFX0RFTEVURQogICAgICAgIE1FTlVJVEVNICJSZSZub21lYXIuLi4iLCAgICAgICAgICAgICAgICAxMDkKICAgICAgICBNRU5VSVRFTSAiJlByb3ByaWVkYWRlcy4uLlx0QWx0K0VudGVyIiwgSURfRURJVF9QUk9QRVJUSUVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkMmb21wcmltaXIuLi4iLCAgICAgICAgICAgICAgIDExOQogICAgICAgIE1FTlVJVEVNICImRGVzY29tcHJpbWlyLi4uIiwgICAgICAgICAgICAxMjAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRXhlY3UmdGFyLi4uIiwgICAgICAgICAgICAgICAgSURfRVhFQ1VURQogICAgICAgIE1FTlVJVEVNICImSW1wcmltaXIuLi4iLCAgICAgICAgICAgICAgICAxMDIKICAgICAgICBNRU5VSVRFTSAiQSZzc29jaWFyLi4uIiwgICAgICAgICAgICAgICAgMTAzCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkNyaSZhciBwYXN0YS4uLiIsICAgICAgICAgICAgIDExMQogICAgICAgIE1FTlVJVEVNICJQJmVzcXVpc2FyLi4uIiwgICAgICAgICAgICAgICAxMDQKICAgICAgICBNRU5VSVRFTSAiU2VsZWNjaW9uYXIgZmljaGVpJnJvcy4uLiIsICAgIDExNgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIlNhaSZyXHRBbHQrWCIsICAgICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAojZWxzZQogICAgICAgIE1FTlVJVEVNICJTYWkmciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIiZEaXNjbyIgIHsKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhciBkaXNjby4uLiIsICAgICAgICAgICAgMjAxCiAgICAgICAgTUVOVUlURU0gIiZOb21lYXIgZGlzY28uLi4iLCAgICAgICAgICAgIDIwMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRm9ybWF0YXIgZGlzY28uLi4iLCAgICAgICAgICBJRF9GT1JNQVRfRElTSwojaWZkZWYgX1dJTjk1CiAgICAgICAgTUVOVUlURU0gIiZHZXJhciBkaXNjbyBkZSBzaXN0ZW1hLi4uIiwgLTEgICAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiTGlnYSZyIHVuaWRhZGUgZGUgcmVkZSIsICAgSURfQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gIiZEZXNsaWdhciB1bmlkYWRlIGRlIHJlZGUiLElEX0RJU0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImUGFydGlsaGFyIGNvbW8uLi4iLCAgICAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAiJlJlbW92ZXIgcGFydGlsaGEuLi4iLCAgICAgICAgMjU1CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlNlbGVjY2lvbmFyICZ1bmlkYWRlLi4uIiwgICAgIDI1MQogICAgfQoKICAgIFBPUFVQICLBJnJ2b3JlIiAgewogICAgICAgIE1FTlVJVEVNICImUHLzeGltbyBu7XZlbFx0KyIsICAgICAgICAgICAzMDEKICAgICAgICBNRU5VSVRFTSAiRXhwYW5kaSZyIHBhc3RhXHQqIiwgICAgICAgICAgMzAyCiAgICAgICAgTUVOVUlURU0gIkV4cGFuZGlyICZ0dWRvXHRTdHJnKyoiLCAgICAgIDMwMwogICAgICAgIE1FTlVJVEVNICJSZWNvbGhlciBwJmFzdGFcdC0iLCAgICAgICAgICAzMDQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkluZGljYXIgc3Vibu12ZWlzIiwgICAgICAgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIiZFeGliaXIiICB7CiAgICAgICAgTUVOVUlURU0gIsEmcnZvcmUgZSBwYXN0YSIsICAgICAgICAgICAgIDQxMwogICAgICAgIE1FTlVJVEVNICJBJnBlbmFzIOFydm9yZSIsICAgICAgICAgICAgIDQxMQogICAgICAgIE1FTlVJVEVNICJBcCZlbmFzIHBhc3RhIiwgICAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImRGl2aWRpciIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZOb21lIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfTkFNRQogICAgICAgIE1FTlVJVEVNICImVG9kb3Mgb3MgZGVsYWxoZXMiLCAgICAgICAgICBJRF9WSUVXX0FMTF9BVFRSSUJVVEVTLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIkQmZXRhbGhlcyBwYXJjaWFpcy4uLiIsICAgICAgIElEX1ZJRVdfU0VMRUNURURfQVRUUklCVVRFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ2xhc3NpZmljYXIgcG9yIG5vbWUiLCAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICJDJmxhc3NpZmljYXIgcG9yIHRpcG8iLCAgICAgICBJRF9WSUVXX1NPUlRfVFlQRQogICAgICAgIE1FTlVJVEVNICJDbCZhc3NpZmljYXIgcG9yIHRhbWFuaG8iLCAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICJDbGEmc3NpZmljYXIgcG9yICZkYXRhIiwgICAgICBJRF9WSUVXX1NPUlRfREFURQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJDbGFzc2lmaWNhciAmcG9yLi4uIiwgICAgICAgICBJRF9WSUVXX0ZJTFRFUgogICAgfQoKICAgIFBPUFVQICImT3Dn9WVzIiAgewogICAgICAgIE1FTlVJVEVNICImQ29uZmlybWHn428uLi4iLCAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiJlRpcG8gZGUgTGV0cmEuLi4iLCAgICAgICAgICAgICAgICAgICBJRF9TRUxFQ1RfRk9OVAogICAgICAgIE1FTlVJVEVNICImUGVyc29uYWxpemFyIGJhcnJhIGRlIGZlcnJhbWVudGFzLi4uIiwgNTEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkJhcnJhIGQmZSBmZXJyYW1lbnRhcyIsICAgICAgIElEX1ZJRVdfVE9PTF9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiJkJhcnJhIGRlIHVuaWRhZGVzIiwgICAgICAgICAgSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiQiZhcnJhIGRlIGUmc3RhZG8iLCAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJFY3LjIENvbXBsZXRvXHRDdHJsK1NoaWZ0K1MiLCAgICBJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZNaW5pbWl6YXIgZHVyYW50ZSBvIHVzbyIsICAgIDUwNAogICAgICAgIE1FTlVJVEVNICImR3JhdmFyIGNvbmZpZ3VyYef1ZXMgYW8gc2FpciIsNTExCiAgICB9CgoKICAgIFBPUFVQICImU2VndXJhbudhIiAgewogICAgICAgIE1FTlVJVEVNICImQWNlc3NvLi4uIiwgICAgICAgICAgICAgICAgICA2MDUKICAgICAgICBNRU5VSVRFTSAiJkF1dGVudGljYefjby4uLiIsICAgICAgICAgICAgICAgICA2MDYKICAgICAgICBNRU5VSVRFTSAiJkRvbm8uLi4iLCAgICAgICAgICAgICAgICAgICAgNjA3CiAgICB9CgogICAgUE9QVVAgIiZKYW5lbGEiICB7CiAgICAgICAgTUVOVUlURU0gIiZOb3ZhIGphbmVsYSIsICAgICAgICAgICAgICAgIElEX1dJTkRPV19ORVcKICAgICAgICBNRU5VSVRFTSAiJkVtIGNhc2NhdGFcdEN0cmwrRjUiLCAgICAgICAgSURfV0lORE9XX0NBU0NBREUKICAgICAgICBNRU5VSVRFTSAiTGFkbyBhIGxhZG8gJmhvcml6b250YWxtZW50ZSIsSURfV0lORE9XX1RJTEVfSE9SWgogICAgICAgIE1FTlVJVEVNICJMYWRvIGEgbGFkbyAmdmVydGljYWxtZW50ZVx0Q3RybCtGNCIsSURfV0lORE9XX1RJTEVfVkVSVAojaWZuZGVmIF9OT19FWFRFTlNJT05TCiAgICAgICAgTUVOVUlURU0gIk9yZ2FuaXphciBhdXRvbWF0aWNhbWVudGUiLCAgIElEX1dJTkRPV19BVVRPU09SVAojZW5kaWYKICAgICAgICBNRU5VSVRFTSAiJk9yZ2FuaXphciDtY29uZXMiLCAgICAgICAgICAgSURfV0lORE9XX0FSUkFOR0UKICAgICAgICBNRU5VSVRFTSAiJkFjdHVhbGl6YXJcdEY1IiwgICAgICAgICAgICAgSURfUkVGUkVTSAogICAgfQoKICAgIFBPUFVQICJBaiZ1ZGEiICB7CiAgICAgICAgTUVOVUlURU0gIiZU83BpY29zIGRhIGFqdWRhXHRGMSIsICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiUGVzcXVpc2FyLi4uIiwgICAgICAgICAgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICImVXNhciBhIGFqdWRhIiwgICAgICAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU29icmUgbyBXaW5lZmlsZS4uLiIsICAgICAgICBJRF9BQk9VVAogICAgfQp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX05FVVRSQUwKCklERF9FWEVDVVRFIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkV4ZWN1dGFyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIENPTlRST0wgICAgICAgICAiIiwgMTAxLCAiU3RhdGljIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIiZDb21hbmRvOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgQ09OVFJPTCAgICAgICAgICImTWluaW1pemFkbyIsIDIxNCwgIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QLDMsIDQ1LCA3MSwgMTIKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImQWp1ZGEiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpJRERfU0VMRUNUX0RFU1RJTkFUSU9OIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlNlbGVjaW9uYXIgZGVzdGlubyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImQ2FtaW5obzoiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJDYW5jZWxhciIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICImUHJvY3VyYXIiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTZWxlY2lvbmFyIGRlc3Rpbm8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICJTdGF0aWMiLCBTU19TSU1QTEV8U1NfTk9QUkVGSVgsIDMsIDYsIDE2MiwgMTAKICAgIENPTlRST0wgICAgICAgICAiJkxvY2FsaXph5+NvOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZQcm9jdXJhciIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KClNUUklOR1RBQkxFCnsKICAgIElEU19GT05UX1NFTF9ETEdfTkFNRSAgICJBcGxpY2FuZG8gY29uZmlndXJh5/VlcyBkZSBmb250ZSIKICAgIElEU19GT05UX1NFTF9FUlJPUiAgICAgICJFcnJvIGVucXVhbnRvIHNlbGVjaW9uYSBub3ZhIGZvbnRlLiIKfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNUUklOR1RBQkxFCnsKICAgIElEU19GT05UX1NFTF9ETEdfTkFNRSAgICJBIGFwbGljYXIgY29uZmlndXJh5/VlcyBkbyB0aXBvIGRlIGxldHJhIgogICAgSURTX0ZPTlRfU0VMX0VSUk9SICAgICAgIkVycm8gYW8gc2VsZWNjaW9uYXIgbm92byB0aXBvIGRlIGxldHJhLiIKfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUKewogSURTX1dJTkVGSUxFICAgICAgICAgICAgICAgIldpbmVmaWxlIgogSURTX0VSUk9SICAgICAgICAgICAgICAgICAgIkVycm8iCiBJRFNfUk9PVF9GUyAgICAgICAgICAgICAgICAicm9vdCBmcyIKIElEU19VTklYRlMgICAgICAgICAgICAgICAgICJ1bml4ZnMiCiBJRFNfREVTS1RPUCAgICAgICAgICAgICAgICAiwXJlYSBkZSB0cmFiYWxobyIKIElEU19TSEVMTCAgICAgICAgICAgICAgICAgICJTaGVsbCIKIElEU19USVRMRUZNVCAgICAgICAgICAgICAgICIlcyAtICVzIgogSURTX05PX0lNUEwgICAgICAgICAgICAgICAgIkFpbmRhIG7jbyBpbXBsZW1lbnRhZG8iCiBJRFNfV0lORV9GSUxFICAgICAgICAgICAgICAiV2luZSBGaWxlIgogSURTX0NPTF9OQU1FICAgICAgICAgICAgICAgIk5vbWUiCiBJRFNfQ09MX1NJWkUgICAgICAgICAgICAgICAiVGFtYW5obyIKIElEU19DT0xfQ0RBVEUgICAgICAgICAgICAgICJDRGF0YSIKIElEU19DT0xfQURBVEUgICAgICAgICAgICAgICJBRGF0YSIKIElEU19DT0xfTURBVEUgICAgICAgICAgICAgICJNRGF0YSIKIElEU19DT0xfSURYICAgICAgICAgICAgICAgICLNbmRpY2UvSW5vZGUiCn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFCgpTVFJJTkdUQUJMRQp7CiBJRFNfV0lORUZJTEUgICAgICAgICAgICAgICAiV2luZWZpbGUiCiBJRFNfRVJST1IgICAgICAgICAgICAgICAgICAiRXJybyIKIElEU19ST09UX0ZTICAgICAgICAgICAgICAgICJyb290IGZzIgogSURTX1VOSVhGUyAgICAgICAgICAgICAgICAgInVuaXhmcyIKIElEU19ERVNLVE9QICAgICAgICAgICAgICAgICJFY3LjIgogSURTX1NIRUxMICAgICAgICAgICAgICAgICAgIkxpbmhhIGRlIENvbWFuZG9zIgogSURTX1RJVExFRk1UICAgICAgICAgICAgICAgIiVzIC0gJXMiCiBJRFNfTk9fSU1QTCAgICAgICAgICAgICAgICAiQWluZGEgbuNvIGltcGxlbWVudGFkbyIKIElEU19XSU5FX0ZJTEUgICAgICAgICAgICAgICJGaWNoZWlybyBXaW5lIgogSURTX0NPTF9OQU1FICAgICAgICAgICAgICAgIk5vbWUiCiBJRFNfQ09MX1NJWkUgICAgICAgICAgICAgICAiVGFtYW5obyIKIElEU19DT0xfQ0RBVEUgICAgICAgICAgICAgICJDRGF0YSIKIElEU19DT0xfQURBVEUgICAgICAgICAgICAgICJBRGF0YSIKIElEU19DT0xfTURBVEUgICAgICAgICAgICAgICJNRGF0YSIKIElEU19DT0xfSURYICAgICAgICAgICAgICAgICLNbmRpY2UvSW5vZGUiCn0KCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19ORVVUUkFMCgpTVFJJTkdUQUJMRQp7CiBJRFNfQ09MX0xJTktTICAgICAgICAgICAgICAiTGlnYef1ZXMiCiBJRFNfQ09MX0FUVFIgICAgICAgICAgICAgICAiQXRyaWJ1dG9zIgogSURTX0NPTF9TRUMgICAgICAgICAgICAgICAgIlNlZ3VyYW7nYSIKCiBJRFNfRlJFRV9TUEFDRV9GTVQgICAgICAgICAiJXMgb2YgJXMgZnJlZSIKfQo=