LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1BPTElTSCwgU1VCTEFOR19ERUZBVUxUCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlamVzdHIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSW1wb3J0dWogcmVqZXN0ci4uLiIsICAgICAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUKICAgICAgICBNRU5VSVRFTSAiJkVrc3BvcnR1aiByZWplc3RyLi4uIiwgICAgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZQb2SzuWN6IHJlamVzdHIgc2llY2lvd3kuLi4iLElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICImT2SzuWN6IHJlamVzdHIgc2llY2lvd3kuLi4iLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkRydWt1alx0Q3RybCtQIiwgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJaYSZrb/FjeiIsICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICImRWR5Y2phIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk1vZHlmaWt1aiIsICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5vd3kiCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZLbHVjeiIsICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJkRhbmEgdGVrc3Rvd2EiLCAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRhbmEgYmluYXJuYSIsICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRhbmEgbGljemJvd2EgKERXT1JEKSIsSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkRhbmEgd2llbG90ZWtzdG93YSAoTVVMVElTWikiLElEX0VESVRfTkVXX01VTFRJX1NUUklOR1ZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlUmc3XxXHREZWwiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIlombWll8SBuYXp36lx0RjIiLCAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImS29waXVqIG5henfqIGtsdWN6YSIsICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImWm5hamSfLi4uXHRDdHJsK0YiLCAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJabiZhamSfIG5hc3TqcG55XHRGMyIsICAgICAgICBJRF9FRElUX0ZJTkRORVhULCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIiZXaWRvayIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZQYXNlayBzdGFudSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfU1RBVFVTQkFSCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIlBvJmR6aWVsIiwgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJk9knHdpZb9cdEY1IiwgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImVWx1YmlvbmUiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImRG9kYWogZG8gdWx1YmlvbnljaCIsICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiJlVzdfEgdWx1YmlvbnkiLCAgICAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICJQb21vJmMiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImVGVtYXR5IFBvbW9jeVx0RjEiLCAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRWR5dG9yIHJlamVzdHJ1IC0gaSZuZm9ybWFjamUiLElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIiZNb2R5ZmlrdWoiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCglNRU5VSVRFTSAiTW9keWZpa3VqIGRhbmUgYmluYXJuZSIsICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImVXN18Vx0RGVsIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIiZabWll8SBuYXp36iIsICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTm93eSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJktsdWN6IiwgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJkRhbmEgdGVrc3Rvd2EiLCAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEYW5hIGJpbmFybmEiLCAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRGFuYSBsaWN6Ym93YSAoRFdPUkQpIixJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRGFuYSB3aWVsb3Rla3N0b3dhIChNVUxUSVNaKSIsSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiVSZzdfFcdERlbCIsICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiWiZtaWXxIG5henfqXHRGMiIsICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZLb3BpdWogbmF6d+oga2x1Y3phIiwgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZabmFqZJ8uLi5cdEN0cmwrRiIsICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9FWFBPUlRfVEVNUExBVEUgRElBTE9HIERJU0NBUkRBQkxFICA1MCwgNTAsIDI3OCwgNTQKU1RZTEUgRFNfM0RMT09LIHwgRFNfQ09OVFJPTCB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX0NMSVBTSUJMSU5HUyB8CiAgICBXU19CT1JERVIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggIiZFa3Nwb3J0dWogcmVnaXN0ciIsIElEQ19FWFBPUlRfQkFTRSwgNiwgNiwgMjY2LCA0MiwgV1NfR1JPVVAKICAgIEFVVE9SQURJT0JVVFRPTiAiJkNhs3kgcmVqZXN0ciIsIElEQ19FWFBPUlRfQUxMLCAxMiwgMTUsIDI0NCwgMTIKICAgIEFVVE9SQURJT0JVVFRPTiAiJld5YnJhbrkgZ2GzuZ86IiwgSURDX0VYUE9SVF9TRUxFQ1RFRCwgMTIsIDMwLCA3MCwgMTIKICAgIEVESVRURVhUIElEQ19FWFBPUlRfUEFUSCwgODIsIDMwLCAxODQsIDEyCkVORAoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIld5c3p1a2FqIHcgcmVqZXN0cnplIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIlpuYWpknzoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICJTenVrYWogdzoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOAogICAgQ0hFQ0tCT1ggICAgICAgICJLbHVjemFjaCIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJOYXp3YWNoIHdhcnRvnGNpIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIlRyZZxjaSB3YXJ0b5xjaSIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiVHlsa28gcGWzbmUgZG9wYXNvd2FuaWUiLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDEyMCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIERFRlBVU0hCVVRUT04gICAiWm5hamSfIixJRE9LLDE3NSw1LDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIlphbWtuaWoiLElEQ0FOQ0VMLDE3NSwyMiwzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRvZGFqIGRvIHVsdWJpb255Y2giCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTmF6d2E6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFudWx1aiIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVXN18SB1bHViaW9ueSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYXp3YToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw3MywzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBbnVsdWoiLElEQ0FOQ0VMLDE3NSw3MywzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkeWNqYSBkYW5laiB0ZWtzdG93ZWoiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTmF6d2E6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiV2FydG+c5joiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFudWx1aiIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZHljamEgZGFuZWogbGljemJvd2VqIChEV09SRCkiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTmF6d2E6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiV2FydG+c5joiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJTeXN0ZW0iLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJTemVzbmFzdGtvd3kiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRHppZXNp6nRueSIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAiQW51bHVqIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZHljamEgZGFuZWogYmluYXJuZWoiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTmF6d2E6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIldhcnRvnOY6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19WQUxVRV9EQVRBLCJIZXhFZGl0IixXU19UQUJTVE9QLDQsNDAsMTYwLDQwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw4MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBbnVsdWoiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX01VTFRJX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkeWNqYSBkYW5laiB3aWVsb3Rla3N0b3dlaiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJOYXp3YToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiV2FydG+c5joiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDExMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0hTQ1JPTEwgfCBXU19WU0NST0xMIHwgRVNfTVVMVElMSU5FIHwgRVNfV0FOVFJFVFVSTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsMTYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFudWx1aiIsSURDQU5DRUwsMTc1LDE2MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTmF6d2EiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIldhcnRvnOYiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJFZHl0b3IgcmVqZXN0cnUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJaYXdpZXJhIHBvbGVjZW5pYSBvcGVydWq5Y2UgbmEgY2GzeW0gcmVqZXN0cnplIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIlphd2llcmEgcG9sZWNlbmlhIGRvdHljerljZSBlZHljamkga2x1Y3p5IGkgZGFueWNoIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIlphd2llcmEgcG9sZWNlbmlhIGRvdHljerljZSB3eWdsuWR1IHByb2dyYW11IgogICAgSURfRkFWT1JJVEVTX01FTlUgICAgICAgIlphd2llcmEgcG9sZWNlbmlhIGRvdHljerljZSBza3LzdPN3IGRvIGtsdWN6eSByZWplc3RydSIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJaYXdpZXJhIHBvbGVjZW5pYSB3eZx3aWV0bGFquWNlIGluZm9ybWFjamUgbyBwcm9ncmFtaWUiCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiWmF3aWVyYSBwb2xlY2VuaWEgdHdvcnq5Y2Ugbm93ZSBrbHVjemUgaSBkYW5lIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAiUG96d2FsYSB6bW9keWZpa293YeYgd2FydG+c5iBkYW5laiIKICAgIElEX0VESVRfTkVXX0tFWSAgICAgICAgICJEb2RhamUgbm93eSBrbHVjeiIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJEb2RhamUgbm93uSBkYW65IHRla3N0b3e5IgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkRvZGFqZSBub3e5IGRhbrkgYmluYXJuuSIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJEb2RhamUgbm93uSBkYW65IGxpY3pib3e5IgogICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUgIkRvZGFqIG5vd7kgZGFuuSB3aWVsb3Rla3N0b3e5IChNVUxUSVNaKSIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiSW1wb3J0dWplIHBsaWsgdGVrc3Rvd3kgZG8gcmVqZXN0cnUiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFa3Nwb3J0dWplIGN66pzmIGx1YiBjYbNvnOYgcmVqZXN0cnUgZG8gcGxpa3UgdGVrc3Rvd2VnbyIKICAgIElEX1JFR0lTVFJZX0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICKjuWN6eSBzaeogZG8gcmVqZXN0cnUgaW5uZWdvIGtvbXB1dGVyYSIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPZLO5Y3phIHNp6iBvZCByZWplc3RydSBpbm5lZ28ga29tcHV0ZXJhIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIkRydWt1amUgY2Gzb5zmIGx1YiBjeuqc5iByZWplc3RydSIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk9wZW5zIHJlZ2lzdHJ5IGVkaXRvciBoZWxwIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIld5nHdpZXRsYSBpbmZvcm1hY2rqIG8gcHJvZ3JhbWllLCBudW1lcnplIHdlcnNqaSBpIHByYXdhY2ggYXV0b3Jza2ljaCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIktv8WN6eSBkemlhs2FuaWUgZWR5dG9yYSByZWplc3RydSIKICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAiRG9kYWplIGtsdWN6ZSBkbyBsaXN0eSB1bHViaW9ueWNoIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJVc3V3YSBrbHVjemUgeiBsaXN0eSB1bHViaW9ueWNoIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIld5nHdpZXRsYSBsdWIgdWtyeXdhIHBhc2VrIHN0YW51IgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIlptaWVuaWEgcHJvcG9yY2plIHN6ZXJva2+cY2kgcGFuZWxpIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIk9knHdpZb9hIHphd2FydG+c5iBva2llbiIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJLYXN1amUgemF6bmFjem9ueSBvYmlla3QiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiWm1pZW5pYSBuYXp36iB6YXpuYWN6b25lZ28gb2JpZWt0dSIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICJLb3BpdWplIG5henfqIHphem5hY3pvbmVnbyBrbHVjemEgZG8gc2Nob3drYSIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJabmFqZHVqZSBjablnIHpuYWvzdyB3IGtsdWN6dSBsdWIgZGFuZWoiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiWm5hamR1amUgbmFzdOpwbmUgd3lzdLlwaWVuaWUgb3N0YXRuaW8gc3p1a2FuZWdvIGNpuWd1IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiQrO5ZCIKICAgIElEU19CQURfS0VZCQkgICAgIk5pZSB1ZGGzbyBzaWUgcHJ6ZWN6eXRh5iBrbHVjemEgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJOaWUgdWRhs28gc2llIHByemVjenl0YeYgZGFuZWogJyVzJyIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJOaWUgZGEgc2nqIG1vZHlmaWtvd2HmIGtsdWN6eSB0ZWdvIHR5cHUgKCVsZCkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiV2FydG+c5iBqZXN0IHpieXQgZHW/YSAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJQb3R3aWVyZHplbmllIGthc293YW5pYSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJKZXN0ZZwgcGV3aWVuLCC/ZSBjaGNlc3ogdXN1brnmIGRhbrkgJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTm93eSBrbHVjeiAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTm93YSBkYW5hICMlZCIKICAgIElEU19OT1RGT1VORCAgICAgICAgICAgICJOaWUgdWRhs28gc2nqIHd5c3p1a2HmIGNpuWd1ICclcyciCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICJJbXBvcnR1aiBwbGlrIHJlamVzdHLzdyIKICAgIElEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICJFa3Nwb3J0dWogcGxpayByZWplc3Ry83ciCiAgICBJRFNfRklMRURJQUxPR19GSUxURVIgICAgICAgICAiUGxpa2kgcmVqZXN0cvN3XDAqLnJlZ1wwUGxpa2kgcmVqZXN0cvN3IFdpbjl4L05UNCAoUkVHRURJVDQpXDAqLnJlZ1wwV3N6eXN0a2llIHBsaWtpICgqLiopXDAqLipcMFwwIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfUkVHSVNUUllfUk9PVF9OQU1FICAgICAgICAiTfNqIGtvbXB1dGVyIgogICAgSURTX1JFR0lTVFJZX0RFRkFVTFRfVkFMVUUgICAgIihEb215nGxuYSkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfTk9UX1NFVCAgICAgICAiKHdhcnRvnOYgbmllIHVzdGFsb25hKSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9DQU5UX0RJU1BMQVkgICIobmllIG1vZ+ogd3mcd2lldGxp5iB3YXJ0b5xjaSkiCiAgICBJRFNfUkVHSVNUUllfVU5LTk9XTl9UWVBFICAgICAgICAiKG5pZXpuYW55OiAlZCkiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJPcGVucyBSZWdpc3RyeSBFZGl0b3IgSGVscC4iCiAqICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJEaXNwbGF5cyBwcm9ncmFtIGluZm9ybWF0aW9uLCB2ZXJzaW9uIG51bWJlciwgYW5kIGNvcHlyaWdodC4iCiAqRU5ECiAqLwo=