LyoKICogV2luZWZpbGUKICogR2VybWFuIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDAsIDIwMDUgTWFydGluIEZ1Y2hzCiAqIENvcHlyaWdodCAyMDAyIFN0ZXZlbiBFZHdhcmRzCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19ORVVUUkFMCgovKiBNZW51ICovCgpJRE1fV0lORUZJTEUgTUVOVSBGSVhFRCBJTVBVUkUKewogICAgUE9QVVAgIiZEYXRlaSIgIHsKICAgICAgICBNRU5VSVRFTSAi1iZmZm5lblx0RWluZ2FiZXRhc3RlIiwgICAgICAgSURfQUNUSVZBVEUKICAgICAgICBNRU5VSVRFTSAiJlZlcnNjaGllYmVuLi4uXHRGNyIsICAgICAgICAgSURfRklMRV9NT1ZFCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXJlbi4uLlx0RjgiLCAgICAgICAgICAgIElEX0ZJTEVfQ09QWQogICAgICAgIE1FTlVJVEVNICImSW4gWndpc2NoZW5hYmxhZ2UuLi5cdEY5IiwgICAxMTgKICAgICAgICBNRU5VSVRFTSAiJkz2c2NoZW5cdEVudGYiLCAgICAgICAgICAgICAgSURfRklMRV9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlVtYmVuZW5uZW4uLi4iLCAgICAgICAgICAgICAgMTA5CiAgICAgICAgTUVOVUlURU0gIiZFaWdlbnNjaGFmdGVuLi4uXHRBbHQrRWluZ2FiZXRhc3RlIiwgSURfRURJVF9QUk9QRVJUSUVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIksmb21wcmltaWVyZW4uLi4iLCAgICAgICAgICAgIDExOQogICAgICAgIE1FTlVJVEVNICJEZWtvJm1wcmltaWVyZW4uLi4iLCAgICAgICAgICAxMjAKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkF1c2b8aHJlbi4uLiIsICAgICAgICAgICAgICAgSURfRVhFQ1VURQogICAgICAgIE1FTlVJVEVNICImRHJ1Y2tlbi4uLiIsICAgICAgICAgICAgICAgICAxMDIKICAgICAgICBNRU5VSVRFTSAiWnVvcmQmbmVuLi4uIiwgICAgICAgICAgICAgICAgMTAzCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlZlciZ6ZWljaG5pcyBlcnN0ZWxsZW4uLi4iLCAgIDExMQogICAgICAgIE1FTlVJVEVNICImU3VjaGVuLi4uIiwgICAgICAgICAgICAgICAgICAxMDQKICAgICAgICBNRU5VSVRFTSAiRGF0ZWllbiBhdXMmd+RobGVuLi4uIiwgICAgICAgMTE2CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZCZWVuZGVuXHRBbHQrWCIsICAgICAgICAgICAgIElEX0ZJTEVfRVhJVAogICAgfQoKICAgIFBPUFVQICJEYSZ0ZW50cuRnZXIiICB7CiAgICAgICAgTUVOVUlURU0gIkRhdGVudHLkZ2VyICZrb3BpZXJlbi4uLiIsICAgIDIwMQogICAgICAgIE1FTlVJVEVNICJEYXRlbnRy5GdlciAmYmVuZW5uZW4uLi4iLCAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRGF0ZW50cuRnZXIgJmZvcm1hdGllcmVuLi4uIiwgSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQogICAgICAgIE1FTlVJVEVNICIuLi4iLCAgICAgICAgIC0xICAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiTmV0endlcmtsYXVmd2VyayAmdmVyYmluZGVuLi4uIixJRF9DT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSAiTmV0endlcmtsYXVmd2VyayAmdHJlbm5lbi4uLiIsSURfRElTQ09OTkVDVF9ORVRXT1JLX0RSSVZFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkYmcmVpZ2ViZW4gYWxzLi4uIiwgICAgICAgICAgIDI1NAogICAgICAgIE1FTlVJVEVNICJGcmVpZ2FiZSBiZWVuJmRlbi4uLiIsICAgICAgICAyNTUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiTGF1ZndlcmsgYXVzJnfkaGxlbi4uLiIsICAgICAgMjUxCiAgICB9CgoKICAgIFBPUFVQICImVmVyemVpY2huaXNzZSIgIHsKICAgICAgICBNRU5VSVRFTSAiJk7kY2hzdGUgRWJlbmUgZWluYmxlbmRlblx0KyIsMzAxCiAgICAgICAgTUVOVUlURU0gIiZad2VpZyBlaW5ibGVuZGVuXHQqIiwgICAgICAgIDMwMgogICAgICAgIE1FTlVJVEVNICJBbGxlICZFYmVuZW4gZWluYmxlbmRlblx0U3RyZysqIiwzMDMKICAgICAgICBNRU5VSVRFTSAiWndlaWcgJmF1c2JsZW5kZW5cdC0iLCAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWZXJ6d2VpZ3VuZ2VuIGtlbm56ZWljaG5lbiIsIDUwNQogICAgfQoKICAgIFBPUFVQICImQW5zaWNodCIgIHsKICAgICAgICBNRU5VSVRFTSAiU3RydWt0dXIgJnVuZCBWZXJ6ZWljaG5pcyIsICAgNDEzCiAgICAgICAgTUVOVUlURU0gIk51ciBTdCZydWt0dXIiLCAgICAgICAgICAgICAgIDQxMQogICAgICAgIE1FTlVJVEVNICJOdXIgJlZlcnplaWNobmlzIiwgICAgICAgICAgICA0MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRlaWxlbiIsICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTmFtZSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX05BTUUKICAgICAgICBNRU5VSVRFTSAiQSZsbGUgRGF0ZWlhbmdhYmVuIiwgICAgICAgICAgSURfVklFV19BTExfQVRUUklCVVRFUywgQ0hFQ0tFRAogICAgICAgIE1FTlVJVEVNICImQmVzdGltbXRlIERhdGVpYW5nYWJlbi4uLiIsICBJRF9WSUVXX1NFTEVDVEVEX0FUVFJJQlVURVMKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiTmFjaCBOJmFtZSIsICAgICAgICAgICAgICAgICAgSURfVklFV19TT1JUX05BTUUKICAgICAgICBNRU5VSVRFTSAiTmFjaCBUJnlwIiwgICAgICAgICAgICAgICAgICAgSURfVklFV19TT1JUX1RZUEUKICAgICAgICBNRU5VSVRFTSAiTmFjaCAmR3L232UiLCAgICAgICAgICAgICAgICAgSURfVklFV19TT1JUX1NJWkUKICAgICAgICBNRU5VSVRFTSAiTmFjaCAmRGF0dW0iLCAgICAgICAgICAgICAgICAgSURfVklFV19TT1JUX0RBVEUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQW5nYWJlbiBhdXN3JuRobGVuLi4uIiwgICAgICAgSURfVklFV19GSUxURVIKICAgIH0KCiAgICBQT1BVUCAiJk9wdGlvbmVuIiAgewogICAgICAgIE1FTlVJVEVNICImQmVzdOR0aWdlbi4uLiIsICAgICAgICAgICAgICA1MDEKICAgICAgICBNRU5VSVRFTSAiU2NocmlmdCZhcnQuLi4iLCAgICAgICAgICAgICAgSURfU0VMRUNUX0ZPTlQKICAgICAgICBNRU5VSVRFTSAiU3ltYm9sbGVpc3RlICZkZWZpbmllcmVuLi4uIiwgNTEyCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlN5Jm1ib2xsZWlzdGUiLCAgICAgICAgICAgICAgIElEX1ZJRVdfVE9PTF9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiTGF1ZiZ3ZXJrbGVpc3RlIiwgICAgICAgICAgICAgSURfVklFV19EUklWRV9CQVIsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAiJlN0YXR1c2xlaXN0ZSIsICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJWb2xsYiZpbGRcdFN0cmcrVW1zY2hhbHQrUyIsICBJRF9WSUVXX0ZVTExTQ1JFRU4KI2VuZGlmCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZTeW1ib2wgbmFjaCBQcm9ncmFtbXN0YXJ0IiwgIDUwNAogICAgICAgIE1FTlVJVEVNICImRWluc3RlbGx1bmdlbiBiZWltIEJlZW5kZW4gc3BlaWNoZXJuIiwgNTExCiAgICB9CgogICAgUE9QVVAgIiZTaWNoZXJoZWl0IiAgewogICAgICAgIE1FTlVJVEVNICImQmVyZWNodGlndW5nZW4uLi4iLCAgICAgICAgICA2MDUKICAgICAgICBNRU5VSVRFTSAi3GJlciZ3YWNoZW4uLi4iLCAgICAgICAgICAgICAgNjA2CiAgICAgICAgTUVOVUlURU0gIkJlc2kmdHplci4uLiIsICAgICAgICAgICAgICAgIDYwNwogICAgfQoKICAgIFBPUFVQICImRmVuc3RlciIgIHsKICAgICAgICBNRU5VSVRFTSAiTmV1ZXMgJkZlbnN0ZXIiLCAgICAgICAgICAgICAgSURfV0lORE9XX05FVwogICAgICAgIE1FTlVJVEVNICLcYmVyJmxhcHBlbmRcdFVtc2NoYWx0K0Y1IiwgICBJRF9XSU5ET1dfQ0FTQ0FERQogICAgICAgIE1FTlVJVEVNICImVW50ZXJlaW5hbmRlciIsICAgICAgICAgICAgICBJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIiZOZWJlbmVpbmFuZGVyXHRVbXNjaGFsdCtGNCIsIElEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICJhdSZ0b21hdGlzY2ggYW5vcmRuZW4iLCAgICAgICBJRF9XSU5ET1dfQVVUT1NPUlQKI2VuZGlmCiAgICAgICAgTUVOVUlURU0gIiZTeW1ib2xlIGFub3JkbmVuIiwgICAgICAgICAgIElEX1dJTkRPV19BUlJBTkdFCiAgICAgICAgTUVOVUlURU0gIiZBa3R1YWxpc2llcmVuXHRGNSIsICAgICAgICAgIElEX1JFRlJFU0gKICAgIH0KCiAgICBQT1BVUCAiJkhpbGZlIiAgewogICAgICAgIE1FTlVJVEVNICImSGlsZmV0aGVtZW5cdEYxIiwgICAgICAgICAgICBJRF9IRUxQCiAgICAgICAgTUVOVUlURU0gIiZTdWNoZW4uLi5cdEYxIiwgICAgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAiSGlsZmUgJnZlcndlbmRlblx0RjEiLCAgICAgICAgSURfSEVMUF9VU0lORwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5mbyD8YmVyIFdpbmVmaWxlLi4uIiwgICAgICBJRF9BQk9VVAojaWZkZWYgX19XSU5FX18KICAgICAgICBNRU5VSVRFTSAiSW5mbyD8YmVyICZXaW5lLi4uIiwgICAgICAgICAgSURfQUJPVVRfV0lORQojZW5kaWYKICAgIH0KfQoKCklERF9FWEVDVVRFIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkF1c2b8aHJlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICJCZWZlaGxzJnplaWxlOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgQ09OVFJPTCAgICAgICAgICJBbHMgJlN5bWJvbCIsIDIxNCwgIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QLDMsIDQ1LCA3MSwgMTIKICAgIERFRlBVU0hCVVRUT04gICAiT0siLCAxLCAxNTgsIDYsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkhpbGZlIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJaaWVsIGF1c3fkaGxlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICImVmVyemVpY2huaXM6IiwgLTEsICJTdGF0aWMiLCBTU19MRUZUTk9XT1JEV1JBUHxXU19HUk9VUCwgMywgMTgsIDYwLCAxMAogICAgRURJVFRFWFQgICAgICAgIDIwMSwgMywgMjksIDEzNCwgMTIsIEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiQWJicmVjaGVuIiwgMiwgMTU4LCAyMywgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZEdXJjaHN1Y2hlbiIsIDI1NCwgMTU4LCA0MywgNDcsIDE0Cn0KCklERF9ESUFMT0dfVklFV19UWVBFIERJQUxPRyBESVNDQVJEQUJMRSAxNSwgMTMsIDE2MSwgOTcKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQW5nYWJlbiBhdXN35GhsZW4iCkZPTlQgOCwgIk1TIFNhbnMgU2VyaWYiCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIiZOYW1lOiIsLTEsNyw4LDIyLDEwCiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZJRVdfUEFUVEVSTiwzMSw3LDYzLDEyLEVTX0FVVE9IU0NST0xMCiAgICBHUk9VUEJPWCAgICAgICAgIkRhdGVpdHlwIiwtMSw3LDIzLDg3LDU2CiAgICBDT05UUk9MICAgICAgICAgIiZWZXJ6ZWljaG5pc3NlIixJRENfVklFV19UWVBFX0RJUkVDVE9SSUVTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsMzIsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJlByb2dyYW1tZSIsSURDX1ZJRVdfVFlQRV9QUk9HUkFNUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDQzLDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIiZEb2t1bWVudGUiLElEQ19WSUVXX1RZUEVfRE9DVU1FTlRTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNTQsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiJkFuZGVyZSBEYXRlaWVuIixJRENfVklFV19UWVBFX09USEVSUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDY1LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIlZlcnMmdGVja3RlL1N5c3RlbWRhdGVpZW4gYW56ZWlnZW4iLElEQ19WSUVXX1RZUEVfSElEREVOLAogICAgICAgICAgICAgICAgICAgICJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsNyw4MSwxMDYsOQogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMDQsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDEwNCwyNCw1MCwxNApFTkQKCklERF9ESUFMT0dfUFJPUEVSVElFUyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI0OCwgMjE1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVpZ2Vuc2NoYWZ0ZW4gZvxyICVzIgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxOTEsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICJBYmJyZWNoZW4iLElEQ0FOQ0VMLDE5MSwyOSw1MCwxNAogICAgTFRFWFQgICAgICAgICAgICImRGF0ZWluYW1lOiIsLTEsNyw3LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfRklMRU5BTUUsNzEsNywxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZQZmFkOiIsLTEsNywxOCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1BBVEgsNzEsMTgsMTIwLDksIEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiTGV0enRlICbEbmRlcnVuZzoiLC0xLDcsMjksNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9MQVNUQ0hBTkdFLDcxLDI5LDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiJlZlcnNpb246IiwtMSw3LDQwLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfVkVSU0lPTiw3MSw0MCwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZDb3B5cmlnaHQ6IiwtMSw3LDUxLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfQ09QWVJJR0hULDcxLDUxLDEyMCw5LEVTX1JFQURPTkxZIHwgTk9UIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiJkdy9t9lOiIsLTEsNyw2Miw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1NJWkUsNzEsNjIsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJBdHRyaWJ1dGUiLC0xLDcsNzksMTU4LDQ2CiAgICBDT05UUk9MICAgICAgICAgIiZTY2hyZWliZ2VzY2j8dHp0IixJRENfQ0hFQ0tfUkVBRE9OTFksIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNyw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZWZXJzdGVja3QiLElEQ19DSEVDS19ISURERU4sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5Miw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZBcmNoaXYiLElEQ19DSEVDS19BUkNISVZFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTcsMTAxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAiU3lzJnRlbSIsSURDX0NIRUNLX1NZU1RFTSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDkyLDEwMSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIiZLb21wcmltaWVydCIsSURDX0NIRUNLX0NPTVBSRVNTRUQsIkJ1dHRvbiIsIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTcsMTExLDY4LDkKICAgIEdST1VQQk9YICAgICAgICAiJlZlcnNpb25zaW5mb3JtYXRpb25lbiIsLTEsNywxMjksMjM0LDc5CiAgICBMSVNUQk9YICAgICAgICAgSURDX0xJU1RfUFJPUF9WRVJTSU9OX1RZUEVTLDEzLDEzOSwxMDcsNjMsTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBFRElUVEVYVCAgICAgICAgSURDX0xJU1RfUFJPUF9WRVJTSU9OX1ZBTFVFUywxMjMsMTM5LDExMSw2MyxFU19NVUxUSUxJTkUgfCBFU19SRUFET05MWSB8IFdTX1ZTQ1JPTEwKRU5ECgoKU1RSSU5HVEFCTEUKewogICAgSURTX0ZPTlRfU0VMX0RMR19OQU1FICAgIkFud2VuZGVuIGRlciBTY2hyaWZ0YXJ0ZWluc3RlbGx1bmciCiAgICBJRFNfRk9OVF9TRUxfRVJST1IgICAgICAiRmVobGVyIHfkaHJlbmQgZGVyIFNjaHJpZnRhcnQtQXVzd2FobC4iCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19XSU5FRklMRSAgICAgICAgICAgICJXaW5lZmlsZSIKICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICJGZWhsZXIiCiAgICBJRFNfUk9PVF9GUyAgICAgICAgICAgICAicm9vdCBmcyIKICAgIElEU19VTklYRlMgICAgICAgICAgICAgICJ1bml4ZnMiCiAgICBJRFNfREVTS1RPUCAgICAgICAgICAgICAiRGVza3RvcCIKICAgIElEU19TSEVMTCAgICAgICAgICAgICAgICJTaGVsbCIKICAgIElEU19USVRMRUZNVCAgICAgICAgICAgICIlcyAtICVzIgogICAgSURTX05PX0lNUEwgICAgICAgICAgICAgIk5vY2ggbmljaHQgaW1wbGVtZW50aWVydCIKICAgIElEU19XSU5FICAgICAgICAgICAgICAgICJXSU5FIgogICAgSURTX1dJTkVfRklMRSAgICAgICAgICAgIldpbmUgRmlsZSIKfQoKU1RSSU5HVEFCTEUKewogICAgSURTX0NPTF9OQU1FICAgICAgICAgICAgIk5hbWUiCiAgICBJRFNfQ09MX1NJWkUgICAgICAgICAgICAiR3L232UiCiAgICBJRFNfQ09MX0NEQVRFICAgICAgICAgICAiQ0RhdHVtIgogICAgSURTX0NPTF9BREFURSAgICAgICAgICAgIlpEYXR1bSIKICAgIElEU19DT0xfTURBVEUgICAgICAgICAgICLERGF0dW0iCiAgICBJRFNfQ09MX0lEWCAgICAgICAgICAgICAiSW5kZXgvSW5vZGUiCiAgICBJRFNfQ09MX0xJTktTICAgICAgICAgICAiTGlua3MiCiAgICBJRFNfQ09MX0FUVFIgICAgICAgICAgICAiQXR0cmlidXRlIgogICAgSURTX0NPTF9TRUMgICAgICAgICAgICAgIlNpY2hlcmhlaXQiCgogICAgSURTX0ZSRUVfU1BBQ0VfRk1UICAgICAgIiVzIHZvbiAlcyBmcmVpIgp9CgpTVFJJTkdUQUJMRQp7CklEU19MSUNFTlNFX0NBUFRJT04sICAgICAgICAgICAgIkxJWkVOWiIKSURTX0xJQ0VOU0UsCiJEaWVzZSBCaWJsaW90aGVrIGlzdCBmcmVpZSBTb2Z0d2FyZTsgU2llIGT8cmZlbiBzaWUgdW50ZXIgZGVuIFwKQmVkaW5ndW5nZW4gZGVyIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2llIHZvbiBkZXIgXApGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVy9mZmZW50bGljaHQsIHdlaXRlcnZlcnRlaWxlbiB1bmQvb2RlciBcCm1vZGlmaXppZXJlbjsgZW50d2VkZXIgZ2Vt5N8gVmVyc2lvbiAyLjEgZGVyIExpemVueiBvZGVyIChuYWNoIFwKSWhyZXIgT3B0aW9uKSBqZWRlciBzcOR0ZXJlbiBWZXJzaW9uLlxuXApEaWVzZSBCaWJsaW90aGVrIHdpcmQgaW4gZGVyIEhvZmZudW5nIHdlaXRlcnZlcmJyZWl0ZXQsIGRh3yBzaWUgXApu/HR6bGljaCBzZWluIHdpcmQsIGplZG9jaCBPSE5FIElSR0VOREVJTkUgR0FSQU5USUUsIGF1Y2ggb2huZSBcCmRpZSBpbXBsaXppZXJ0ZSBHYXJhbnRpZSBkZXIgTUFSS1RSRUlGRSBvZGVyIGRlciBWRVJXRU5EQkFSS0VJVCBcCkbcUiBFSU5FTiBCRVNUSU1NVEVOIFpXRUNLLiBNZWhyIERldGFpbHMgZmluZGVuIFNpZSBpbiBkZXIgXApHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuXG5cClNpZSBzb2xsdGVuIGVpbmUgS29waWUgZGVyIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB6dXNhbW1lbiBcCm1pdCBkaWVzZXIgQmlibGlvdGhlayBlcmhhbHRlbiBoYWJlbjsgZmFsbHMgbmljaHQsIHNjaHJlaWJlbiBTaWUgYW4gXApkaWUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIFwKQm9zdG9uLCBNQSAwMjExMCwgVVNBLiIKCklEU19XQVJSQU5UWV9DQVBUSU9OLCAiS0VJTkUgR0FSQU5USUUiCklEU19XQVJSQU5UWSwKIkRpZXNlIEJpYmxpb3RoZWsgd2lyZCBpbiBkZXIgSG9mZm51bmcgd2VpdGVydmVyYnJlaXRldCwgZGHfIHNpZSBu/HR6bGljaCBcCnNlaW4gd2lyZCwgamVkb2NoIE9ITkUgSVJHRU5ERUlORSBHQVJBTlRJRSwgYXVjaCBvaG5lIGRpZSBpbXBsaXppZXJ0ZSBHYXJhbnRpZSBcCmRlciBNQVJLVFJFSUZFIG9kZXIgZGVyIFZFUldFTkRCQVJLRUlUIEbcUiBFSU5FTiBCRVNUSU1NVEVOIFpXRUNLLiBNZWhyIERldGFpbHMgXApmaW5kZW4gU2llIGluIGRlciBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIgp9Cg==