LyoKICogUmVnZWRpdCByZXNvdXJjZXMgKEl0YWxpYW4gTGFuZ3VhZ2UgU3VwcG9ydCkKICoKICogQ29weXJpZ2h0IDIwMDIgUm9iZXJ0IERpY2tlbnNvbgogKiBDb3B5cmlnaHQgMjAwMy0yMDA0IEl2YW4gTGVvIFB1b3RpCiAqIENvcHlyaWdodCAyMDA2IEFudG9uaW8gQ29kYXp6aQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0lUQUxJQU4sIFNVQkxBTkdfTkVVVFJBTAoKLyoKICogTWVudQogKi8KCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RybyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRhLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIiZFc3BvcnRhLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb25uZXR0aSBhIFJlZ2lzdHJvIGluIHJldGUiLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJkRpc2Nvbm5ldHRpIGRhIFJlZ2lzdHJvIGRpIHJldGUiLCBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlN0YW1wYVx0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRSZzY2kiLCAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJk1vZGlmaWNhIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJk1vZGlmaWNhIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImTnVvdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIkNoaWF2ZSIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlZhbG9yZSBzdHJpbmdhIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJlZhbG9yZSBiaW5hcmlvIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJlZhbG9yZSBEV09SRCIsICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkVsaW1pbmFcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIiZSaW5vbWluYVx0RjIiICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWEgbm9tZSBjaGlhdmUiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVHJvdmFcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJlRyb3ZhIFN1Y2Nlc3Npdm9cdEYzIiwgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiJlZpc3VhbGl6emEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJCYXJyYSBkaSAmU3RhdG8iLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiRGkmdmlkaSIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFnZ2lvcm5hXHRGNSIsICAgICAgICAgICAgICAgIElEX1ZJRVdfUkVGUkVTSAogICAgRU5ECiAgICBQT1BVUCAiJlByZWZlcml0aSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZBZ2dpdW5naSBhaSBQcmVmZXJpdGkiLCAgICAgICAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMKICAgICAgICBNRU5VSVRFTSAiJlJpbXVvdmkgZGFpIFByZWZlcml0aSIsICAgICAgICAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUKICAgIEVORAogICAgUE9QVVAgIiZBaXV0byIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTb21tYXJpbyBkZWxsYSBHdWlkYSIsICAgICAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImSW5mb3JtYXppb25pIHN1bGwnZWRpdG9yIGRlbCBSZWdpc3RybyIsICAgICAgSURfSEVMUF9BQk9VVAogICAgRU5ECkVORAoKSURSX1BPUFVQX01FTlVTIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICBQT1BVUCAiIgogIEJFR0lOCglNRU5VSVRFTSAiJk1vZGlmaWNhIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIk1vZGlmaWNhIGRhdGkgYmluYXJpIiwgICAgICAgICAgSURfRURJVF9NT0RJRllfQklOCglNRU5VSVRFTSBTRVBBUkFUT1IKCU1FTlVJVEVNICImRWxpbWluYVx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImUmlub21pbmEiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImTnVvdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGlhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgc3RyaW5nYSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgYmluYXJpbyIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZWYWxvcmUgRFdPUkQiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFbGltaW5hXHREZWwiLCAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmlub21pbmFcdEYyIiAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkNvcGlhIG5vbWUgY2hpYXZlIiwgICAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlRyb3ZhXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKLyoKICogRGlhbG9nCiAqLwoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlRyb3ZhIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkxURVhUICAgICAgICAgICAiVHJvdmE6IixJRENfU1RBVElDLDUsNywxMTksOApFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTApMVEVYVCAgICAgICAgICAgIlRyb3ZhIGluOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CkNIRUNLQk9YICAgICAgICAiQ2hpYXZpIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCkNIRUNLQk9YICAgICAgICAiTm9tZSAoY2FtcG8pIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkNIRUNLQk9YICAgICAgICAiRGF0aSAoY2FtcG8pIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWApDSEVDS0JPWCAgICAgICAgIlNvbG8gc3RyaW5naGUgaW50ZXJlIiwgSURDX0ZJTkRfV0hPTEUsIDUsIDcwLCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKREVGUFVTSEJVVFRPTiAgICJUcm92YSIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUApQVVNIQlVUVE9OICAgICAgIkNoaXVkaSIsSURDQU5DRUwsMTc1LDIyLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQWdnaXVuZ2kgRmF2b3JpdG8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KTFRFWFQgICAgICAgICAgICJOb21lOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNDAsMzAsMTEsV1NfR1JPVVAKUFVTSEJVVFRPTiAgICAgICJDYW5jZWxsYSIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmltdW92aSBGYXZvcml0byIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIk5vbWU6IixJRENfU1RBVElDLDUsNSwxMTksOApMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDczLDMwLDExLFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQ2FuY2VsbGEiLElEQ0FOQ0VMLDE3NSw3MywzMCwxMSwgV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkVkaXRhIFN0cmluZ2EiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tZSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBMVEVYVCAgICAgICAgICAgIkRhdGkgZGVsIHZhbG9yZToiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDYwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkFubnVsbGEiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdGEgRFdPUkQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgTFRFWFQgICAgICAgICAgICJOb21lIGRlbCB2YWxvcmU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgTFRFWFQgICAgICAgICAgICJEYXRpIGRlbCB2YWxvcmU6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICBHUk9VUEJPWCAgICAgICAgIkJhc2UiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICBBVVRPUkFESU9CVVRUT04gIkVzYWRlY2ltYWxlIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW1hbGUiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgUFVTSEJVVFRPTiAgICJBbm51bGxhIixJRENBTkNFTCwxNzUsODAsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9CSU5BUlkgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZGl0YSBCaW5hcmlvIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgIExURVhUICAgICAgICAgICAiTm9tZSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEx8IFdTX0RJU0FCTEVECiAgIExURVhUICAgICAgICAgICAiRGF0aSBkZWwgdmFsb3JlOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19WQUxVRV9EQVRBLCJIZXhFZGl0IixXU19UQUJTVE9QLDQsNDAsMTYwLDQwCiAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgIFBVU0hCVVRUT04gICAiQW5udWxsYSIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICJOb21lIgogICAgSURTX0xJU1RfQ09MVU1OX1RZUEUgICAgIlRpcG8iCiAgICBJRFNfTElTVF9DT0xVTU5fREFUQSAgICAiRGF0aSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FQUF9USVRMRSAgICAgICAgICAgIkVkaXRvciBkZWwgUmVnaXN0cm8iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIGxhdm9yYXJlIHN1IHR1dHRvIGlsIFJlZ2lzdHJvIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgIkNvbnRpZW5lIGkgY29tYW5kaSBwZXIgZWRpdGFyZSB2YWxvcmkgbyBjaGlhdmkiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciBwZXJzb25hbGl6emFyZSBsYSBmaW5lc3RyYSBkZWwgUmVnaXN0cm8iCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciBhY2NlZGVyZSBhbGxlIGNoaWF2aSB1c2F0ZSBmcmVxdWVudGVtZW50ZSIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb250aWVuZSBpIGNvbWFuZGkgcGVyIHZpc3VhbGl6emFyZSBsYSBHdWlkYSBlIGluZm9ybWF6aW9uaSBzdWxsJ2VkaXRvciBkZWwgUmVnaXN0cm8iCiAgICBJRF9FRElUX05FV19NRU5VICAgICAgICAiQ29udGllbmUgaSBjb21hbmRpIHBlciBjcmVhcmUgbnVvdmUgY2hpYXZpIG8gdmFsb3JpIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAiTW9kaWZpY2EgaSBkYXRpIGRlbCB2YWxvcmUiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiQWdnaXVuZ2UgdW5hIG51b3ZhIGNoaWF2ZSIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJBZ2dpdW5nZSB1biBudW92byB2YWxvcmUgc3RyaW5nYSIKICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFICJBZ2dpdW5nZSB1biBudW92byB2YWxvcmUgYmluYXJpbyIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJBZ2dpdW5nZSB1biBudW92byB2YWxvcmUgYSBkb3BwaWEgcGFyb2xhIgogICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFICJJbXBvcnRhIHVuIGZpbGUgZGkgdGVzdG8gbmVsIFJlZ2lzdHJvIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXNwb3J0YSB0dXR0byBvIHBhcnRlIGRlbCBSZWdpc3RybyBpbiB1biBmaWxlIGRpIHRlc3RvIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNpIGNvbm5ldHRlIGFsIFJlZ2lzdHJvIGRpIHVuIGNvbXB1dGVyIHJlbW90byIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaSBkaXNjb25uZXR0ZSBkYWwgUmVnaXN0cm8gZGkgdW4gY29tcHV0ZXIgcmVtb3RvIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIlN0YW1wYSB0dXR0byBvIHBhcnRlIGRlbCBSZWdpc3RybyIKLyogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIkFwcmUgbCdhaXV0byBkZWxsJ0VkaXRvciBkZWwgUmVnaXN0cm8iICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiVmlzdWFsaXp6YSBpbmZvcm1hemlvbmkgc3VsIHByb2dyYW1tYSwgbnVtZXJvIGRpIHZlcnNpb25lIGUgY29weXJpZ2h0IgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiRXNjZSBkYWxsJ2VkaXRvciBkZWwgUmVnaXN0cm8iCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIkFnZ2l1bmdlIHVuYSBjaGlhdmUgYWxsYSBsaXN0YSBkZWkgUHJlZmVyaXRpIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJSaW11b3ZlIHVuYSBvIHBp+SBjaGlhdmkgZGFsbGEgbGlzdGEgZGVpIHByZWZlcml0aSIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJNb3N0cmEgbyBuYXNjb25kZSBsYSBiYXJyYSBkaSBzdGF0byIKICAgIElEX1ZJRVdfU1BMSVQgICAgICAgICAgICJDYW1iaWEgbGEgcG9zaXppb25lIGRlbCBzZXBhcmF0b3JlIHRyYSBkdWUgcGFubmVsbGkiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAiQWdnaW9ybmEgbGEgZmluZXN0cmEiCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAiRWxpbWluYSBsYSBzZWxlemlvbmUiCiAgICBJRF9FRElUX1JFTkFNRSAgICAgICAgICAiUmlub21pbmEgbGEgc2VsZXppb25lIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkNvcGlhIGlsIG5vbWUgZGVsbGEgY2hpYXZlIHNlbGV6aW9uYXRhIG5lZ2xpIGFwcHVudGkiCiAgICBJRF9FRElUX0ZJTkQgICAgICAgICAgICAiVHJvdmEgdW5hIHN0cmluZ2EgZGkgdGVzdG8gaW4gdW5hIGNoaWF2ZSwgdW4gdmFsb3JlIG8gaW4gZGVpIGRhdGkiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiVHJvdmEgbGEgdm9sdGEgc3VjY2Vzc2l2YSBpbCB0ZXN0byBzcGVjaWZpY2F0byBuZWxsYSByaWNlcmNhIHByZWNlZGVudGUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJFcnJvcmUiCiAgICBJRFNfQkFEX0tFWQkJICAgICJJbXBvc3NpYmlsZSB0cm92YXJlIGxhIGNoaWF2ZSAnJXMnIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIkltcG9zc2liaWxlIHRyb3ZhcmUgaWwgdmFsb3JlICclcyciCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiSW1wb3NzaWJpbGUgZWRpdGFyZSB2YWxvcmkgZGkgcXVlc3RvIHRpcG8gKCVsZCkiCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiVmFsb3JlIHRyb3BwbyBncmFuZGUgKCVsZCkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiQ29uZmVybWFyZSBDYW5jZWxsYXppb25lIGRlbCBWYWxvcmUiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiU2VpIHNpY3VybyBkaSB2b2xlciBjYW5jZWxsYXJlIGlsIHZhbG9yZSAnJXMnPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOdW92YSBDaGlhdmUgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk51b3ZvIFZhbG9yZSAjJWQiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKLyoKICpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQogKkJFR0lOCiAqICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJBcHJlIGwnYWl1dG8gZGVsbCdlZGl0b3IgZGVsIFJlZ2lzdHJvLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc3VhbGl6emEgaW5mb3JtYXppb25pIHN1bCBwcm9ncmFtbWEsIGlsIG51bWVybyBkaSB2ZXJzaW9uZSBlIGlsIGNvcHlyaWdodC4iCiAqRU5ECiAqLwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwo=