LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAyMDA0LCAyMDA4IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpegogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX1NQQU5JU0gsIFNVQkxBTkdfTkVVVFJBTAoKLyogTWVudSAqLwoKTUFJTl9NRU5VIE1FTlUKewogUE9QVVAgIiZBcmNoaXZvIiB7CiAgIE1FTlVJVEVNICImTnVldm8uLi4iLAkJCVBNX05FVwogICBNRU5VSVRFTSAiQSZicmlyXHRFbnRlciIsCQkJUE1fT1BFTgogICBNRU5VSVRFTSAiJk1vdmVyLi4uXHRGNyIsCQkJUE1fTU9WRSwgICAgICBHUkFZRUQKICAgTUVOVUlURU0gIiZDb3BpYXIuLi5cdEY4IiwJCQlQTV9DT1BZLCAgICAgIEdSQVlFRAogICBNRU5VSVRFTSAiJkVsaW1pbmFyXHRTdXByIiwJCQlQTV9ERUxFVEUKICAgTUVOVUlURU0gIiZBdHJpYnV0b3MuLi5cdEFsdCtFbnRlciIsCQlQTV9BVFRSSUJVVEVTCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAiJkVqZWN1dGFyLi4uIiwJCQlQTV9FWEVDVVRFCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICBNRU5VSVRFTSAiJlNhbGlyIGRlIFdpbmRvd3MuLi4iLAkJUE1fRVhJVAogfQogUE9QVVAgIiZPcGNpb25lcyIgewogICBNRU5VSVRFTSAiJk9yZGVuYXIgYXV0b23hdGljYW1lbnRlIiwJCVBNX0FVVE9fQVJSQU5HRQogICBNRU5VSVRFTSAiJk1pbmltaXphciBhbCBsYW56YXJzZSIsCQlQTV9NSU5fT05fUlVOCiAgIE1FTlVJVEVNICImR3VhcmRhciBjb25maWd1cmFjafNuIGFsIHNhbGlyIiwJUE1fU0FWRV9TRVRUSU5HUwogfQogUE9QVVAgIiZWZW50YW5hcyIgewogICBNRU5VSVRFTSAiJkNhc2NhZGFcdFNoaWZ0K0Y1IiwJCVBNX09WRVJMQVAKICAgTUVOVUlURU0gIiZNb3NhaWNvXHRTaGlmdCtGNCIsCQlQTV9TSURFX0JZX1NJREUKICAgTUVOVUlURU0gIiZPcmRlbmFyIGljb25vcyIsCQkJUE1fQVJSQU5HRQogfQogClBPUFVQICJBJnl1ZGEiIHsKICAgTUVOVUlURU0gIiZDb250ZW5pZG8iLAkJCVBNX0NPTlRFTlRTCiAgIE1FTlVJVEVNICImQnVzY2FyLi4uIiwJCQlQTV9TRUFSQ0gKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImQXl1ZGEgc29icmUgbGEgYXl1ZGEiLAkJUE1fSEVMUE9OSEVMUAogICBNRU5VSVRFTSAiJlR1dG9yaWFsIiwJCQlQTV9UVVRPUklBTAogICBNRU5VSVRFTSBTRVBBUkFUT1IKCiAgIFBPUFVQICImSW5mby4uLiIgewogICAgIE1FTlVJVEVNICImTGljZW5jaWEiLAkJCVBNX0xJQ0VOU0UKICAgICBNRU5VSVRFTSAiJlNJTiBHQVJBTlTNQSIsCQkJUE1fTk9fV0FSUkFOVFkKICAgICBNRU5VSVRFTSAiJkFjZXJjYSBkZSBXSU5FIiwJCVBNX0FCT1VUX1dJTkUKICAgfQogfQp9CgovKiBEaWFsb2cgYE5ldycgKi8KCkRJQUxPR19ORVcgRElBTE9HIDAsIDAsIDE3MCwgNjUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTnVldm8iCnsKUkFESU9CVVRUT04gICAiIiwgICAgICAgICAgICAgICAgIFBNX05FV19HUk9VUCwgICAgMTAsIDE1LCAgMTAsIDE1CkxURVhUICAgICAgICAgIiZHcnVwbyBkZSBwcm9ncmFtYSIsICAgUE1fTkVXX0dST1VQLCAgICAyMCwgMTgsICA4MCwgMTUKUkFESU9CVVRUT04gICAiIiwgICAgICAgICAgICAgICAgIFBNX05FV19QUk9HUkFNLCAgMTAsIDM1LCAgMTAsIDE1CkxURVhUICAgICAgICAgIiZQcm9ncmFtYSIsIFBNX05FV19QUk9HUkFNLCAgMjAsIDM4LCAgODAsIDE1CkRFRlBVU0hCVVRUT04gIkFjZXB0YXIiLCAgICAgICAgICBJRE9LLCAgICAgICAgICAgMTA1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJDYW5jZWxhciIsICAgICAgSURDQU5DRUwsICAgICAgIDEwNSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQSZ5dWRhIiwgICAgICAgIFBNX0hFTFAsICAgICAgICAxMDUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgTW92ZScgKi8KCkRJQUxPR19NT1ZFIERJQUxPRyAwLCAwLCAyNTAsIDY1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIk1vdmVyIHByb2dyYW1hIgp7CkxURVhUICAgICAgICAgIk1vdmVyIHByb2dyYW1hOiIsICBJRElHTk9SRSwgICAgICAgICAgIDUsICA1LCAgOTAsIDE1CkxURVhUICAgICAgICAgIiIsICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICAgOTUsICA1LCAgOTAsIDE1CkxURVhUICAgICAgICAgIiZEZWwgZ3J1cG86IiwgICAgICBJRElHTk9SRSwgICAgICAgICAgIDUsIDEzLCAgOTAsIDE1CkxURVhUICAgICAgICAgIiIsICAgICAgICAgICAgICAgICBQTV9GUk9NX0dST1VQLCAgICAgOTUsIDEzLCAgOTAsIDE1CkxURVhUICAgICAgICAgIiZBbCBncnVwbzoiLCAgICAgICBQTV9UT19HUk9VUF9UWFQsICAgIDUsIDI4LCAxNDAsIDE1CkNPTUJPQk9YICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9UT19HUk9VUCwgICAgICAgIDUsIDM4LCAxNDAsIDUwLCBXU19UQUJTVE9QIHwgQ0JTX0RST1BET1dOTElTVApERUZQVVNIQlVUVE9OICJBY2VwdGFyIiwgICAgICAgICAgSURPSywgICAgICAgICAgICAgMTg1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJDYW5jZWxhciIsICAgICAgICAgSURDQU5DRUwsICAgICAgICAgMTg1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBJnl1ZGEiLCAgICAgICAgICAgUE1fSEVMUCwgICAgICAgICAgMTg1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYENvcHknICovCgpESUFMT0dfQ09QWSBESUFMT0cgMCwgMCwgMjUwLCA2NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJDb3BpYXIgcHJvZ3JhbWEiCnsKTFRFWFQgICAgICAgICAiQ29waWFyIHByb2dyYW1hOiIsICBJRElHTk9SRSwgICAgICAgICAgNSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICBQTV9QUk9HUkFNLCAgICAgICA5NSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiJkRlbCBncnVwbzoiLCAgICAgICBJRElHTk9SRSwgICAgICAgICAgNSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICBQTV9GUk9NX0dST1VQLCAgICA5NSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiJkFsIGdydXBvOiIsICAgICAgICBQTV9UT19HUk9VUF9UWFQsICAgNSwgMjgsIDE0MCwgMTUKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9UT19HUk9VUCwgICAgICAgNSwgMzgsIDE0MCwgNTAsIFdTX1RBQlNUT1AgfCBDQlNfRFJPUERPV05MSVNUCkRFRlBVU0hCVVRUT04gIkFjZXB0YXIiLCAgICAgICAgICAgSURPSywgICAgICAgICAgICAxODUsICA1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkNhbmNlbGFyIiwgICAgICAgICAgSURDQU5DRUwsICAgICAgICAxODUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkEmeXVkYSIsICAgICAgICAgICAgUE1fSEVMUCwgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgR3JvdXAgYXR0cmlidXRlcycgKi8KCkRJQUxPR19HUk9VUCBESUFMT0cgMCwgMCwgMjMwLCA2NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJBdHJpYnV0b3MgZGVsIGdydXBvIGRlIHByb2dyYW1hIgp7CkxURVhUICAgICAgICAgIiZEZXNjcmlwY2nzbjoiLCAgUE1fREVTQ1JJUFRJT05fVFhULCAgIDA1LCAxOCwgNTAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgUE1fREVTQ1JJUFRJT04sICAgICAgIDYwLCAxOCwgOTAsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICImQXJjaGl2byBkZSBncnVwbzoiLCAgUE1fRklMRV9UWFQsICAgICAgICAgIDA1LCAzOCwgNTAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgUE1fRklMRSwgICAgICAgICAgICAgIDYwLCAzOCwgOTAsIDE1LCBXU19UQUJTVE9QCkRFRlBVU0hCVVRUT04gIkFjZXB0YXIiLCAgICAgICAgSURPSywgICAgICAgICAgICAgICAgMTU1LCAgNSwgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkNhbmNlbGFyIiwgICAgICAgSURDQU5DRUwsICAgICAgICAgICAgMTU1LCAyNSwgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkEmeXVkYSIsICAgICAgICAgUE1fSEVMUCwgICAgICAgICAgICAgMTU1LCA0NSwgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgUHJvZ3JhbSBhdHRyaWJ1dGVzJyAqLwoKRElBTE9HX1BST0dSQU0gRElBTE9HIDAsIDAsIDI1MCwgMTA1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkF0cmlidXRvcyBkZWwgcHJvZ3JhbWEiCnsKTFRFWFQgICAgICAgICAiJkRlc2NyaXBjafNuOiIsICBQTV9ERVNDUklQVElPTl9UWFQsICAgMDUsIDEwLCA2MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICBQTV9ERVNDUklQVElPTiwgICAgICAgODAsIDEwLCA5MCwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgICAiJkztbmVhIGRlIGNvbWFuZG9zOiIsICBQTV9DT01NQU5EX0xJTkVfVFhULCAgMDUsIDI1LCA2MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICBQTV9DT01NQU5EX0xJTkUsICAgICAgODAsIDI1LCA5MCwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgIkRpcmVjdG9yaW8gZGUgJnRyYWJham86IixQTV9ESVJFQ1RPUllfVFhULCAgICAgMDUsIDQwLCA2MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICBQTV9ESVJFQ1RPUlksICAgICAgICAgODAsIDQwLCA5MCwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgIiZDb21iaW5hY2nzbiBkZSB0ZWNsYXM6IixQTV9IT1RfS0VZX1RYVCwgICAgICAgMDUsIDU1LCA2MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICBQTV9IT1RfS0VZLCAgICAgICAgICAgODAsIDU1LCA5MCwgMTUsIFdTX1RBQlNUT1AKSUNPTiAgICAgICAgICAiIiwgICAgICAgICAgICAgICBQTV9JQ09OLCAgICAgICAgICAgICAgMjAsIDcwCkNIRUNLQk9YICAgICAgIiIsICAgICAgICAgICAgICAgUE1fU1lNQk9MLCAgICAgICAgICAgIDgwLCA3NSwgMTAsIDEwLCBXU19UQUJTVE9QCkxURVhUICImTWluaW1pemFyIGFsIGxhbnphcnNlIiwgSURJR05PUkUsICAgICAgICAgICAgIDk1LCA3NSwgNzUsIDEwCkRFRlBVU0hCVVRUT04gIkFjZXB0YXIiLCAgICAgICAgSURPSywgICAgICAgICAgICAgICAgMTg1LCAgNSwgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkNhbmNlbGFyIiwgICAgICAgSURDQU5DRUwsICAgICAgICAgICAgMTg1LCAyNSwgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIiZFeHBsb3Jhci4uLiIsICAgUE1fQlJPV1NFLCAgICAgICAgICAgMTg1LCA0NSwgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gIkNhbWJpYXIgJmljb25vLi4uIiwgUE1fT1RIRVJfU1lNQk9MLCAgICAgMTg1LCA2NSwgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkEmeXVkYSIsICAgICAgICAgUE1fSEVMUCwgICAgICAgICAgICAgMTg1LCA4NSwgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgU3ltYm9sJyAqLwoKRElBTE9HX1NZTUJPTCBESUFMT0cgMCwgMCwgMjAwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJDYW1iaWFyIGljb25vIgp7CkxURVhUICAgICAiJk5vbWJyZSBkZSBhcmNoaXZvOiIsIFBNX0lDT05fRklMRV9UWFQsICAgIDUsIDE1LCAgNDAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0lDT05fRklMRSwgICAgICAgNDUsIDE1LCAgODUsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIiZJY29ubyBhY3R1YWw6IiwgIFBNX1NZTUJPTF9MSVNUX1RYVCwgIDUsIDMwLCAxMjUsIDEwCkNPTUJPQk9YICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1NZTUJPTF9MSVNULCAgICAgIDUsIDQwLCAxMjUsIDUwLAogICBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgV1NfVEFCU1RPUApERUZQVVNIQlVUVE9OICJBY2VwdGFyIiwgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgMTM1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJDYW5jZWxhciIsICAgICAgICBJRENBTkNFTCwgICAgICAgICAgMTM1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImRXhwbG9yYXIuLi4iLCAgICBQTV9CUk9XU0UsICAgICAgICAgMTM1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBJnl1ZGEiLCAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTM1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYEV4ZWN1dGUnICovCgpESUFMT0dfRVhFQ1VURSBESUFMT0cgMCwgMCwgMjAwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFamVjdXRhciBwcm9ncmFtYSIKewpMVEVYVCAgICAgICAgICJM7W5lYSBkZSAmY29tYW5kb3M6IiwgICAgIElESUdOT1JFLCAgIDA1LCAxNSwgMTIwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0NPTU1BTkQsIDA1LCAyNSwgMTIwLCAxNSwgV1NfVEFCU1RPUApDSEVDS0JPWCAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgICAgIFBNX1NZTUJPTCwgIDA1LCA0NSwgIDEwLCAxMCwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICImTWluaW1pemFyIGFsIGxhbnphcnNlIiwgIElESUdOT1JFLCAgIDIwLCA0NSwgMTIwLCAxMApERUZQVVNIQlVUVE9OICJBY2VwdGFyIiwgICAgICAgICAgICAgICAgIElET0ssICAgICAgMTM1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJDYW5jZWxhciIsICAgICAgICAgICAgICAgIElEQ0FOQ0VMLCAgMTM1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICImRXhwbG9yYXIuLi4iLCAgICAgICAgICAgIFBNX0JST1dTRSwgMTM1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBJnl1ZGEiLCAgICAgICAgICAgICAgICAgIFBNX0hFTFAsICAgMTM1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBTdHJpbmdzICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQp7CklEU19QUk9HUkFNX01BTkFHRVIsCQkiR2VzdG9yIGRlIHByb2dyYW1hcyIKSURTX0VSUk9SLAkJCSJFUlJPUiIKSURTX1dBUk5JTkcsCQkJIkFEVkVSVEVOQ0EiCklEU19JTkZPLAkJCSJJbmZvcm1hY2nzbiIKSURTX0RFTEVURSwJCQkiRWxpbWluYXIiCklEU19ERUxFVEVfR1JPVVBfcywJCSK/RWxpbWluYXIgZ3J1cG8gYCVzJz8iCklEU19ERUxFVEVfUFJPR1JBTV9zLAkJIr9FbGltaW5hciBwcm9ncmFtYSBgJXMnPyIKSURTX05PVF9JTVBMRU1FTlRFRCwJCSJObyBpbXBsZW1lbnRhZG8iCklEU19GSUxFX1JFQURfRVJST1JfcywJCSJFcnJvciBsZXllbmRvIGAlcycuIgpJRFNfRklMRV9XUklURV9FUlJPUl9zLAkJIkVycm9yIGVzY3JpYmllbmRvIGAlcycuIgpJRFNfR1JQRklMRV9SRUFEX0VSUk9SX3MsCSJcCkVsIGFyY2hpdm8gZGUgZ3J1cG8gYCVzJyBubyBzZSBwdWVkZSBhYnJpci5cblwKv0RlYmUgdm9sdmVyIGEgaW50ZW50YXJzZSBt4XMgYWRlbGFudGU/IgpJRFNfT1VUX09GX01FTU9SWSwJCSJTaW4gbWVtb3JpYS4iCklEU19XSU5IRUxQX0VSUk9SLAkJIkF5dWRhIG5vIGRpc3BvbmlibGUuIgpJRFNfVU5LTk9XTl9GRUFUVVJFX3MsCQkiQ2FyYWN0ZXLtc3RpY2EgZGVzY29ub2NpZGEgZW4gJXMiCklEU19GSUxFX05PVF9PVkVSV1JJVFRFTl9zLAkiRWwgYXJjaGl2byBgJXMnIGV4aXN0ZS4gTm8gc2UgaGEgc29icmVlc2NyaXRvLiIKSURTX1NBVkVfR1JPVVBfQVNfcywJCSJHdWFyZGUgZWwgZ3J1cG8gY29tbyBgJXMnIHBhcmEgcHJldmVuaXIgbGEgc29icmVlc2NyaXR1cmEgZGUgbG9zIGFyY2hpdm9zIG9yaWdpbmFsZXMuIgpJRFNfTk9fSE9UX0tFWSwJCQkiTmluZ3VuYSIKSURTX0FMTF9GSUxFUywJCQkiVG9kb3MgbG9zIGFyY2hpdm9zICgqLiopIgpJRFNfUFJPR1JBTVMsCQkJIlByb2dyYW1hcyIKSURTX0xJQlJBUklFU19ETEwsCQkiTGlicmFy7WFzICgqLmRsbCkiCklEU19TWU1CT0xfRklMRVMsCQkiQXJjaGl2b3MgZGUgaWNvbm9zIgpJRFNfU1lNQk9MU19JQ08sCQkiSWNvbm9zICgqLmljbykiCn0KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCnsKSURTX0xJQ0VOU0VfQ0FQVElPTiwgICAgICAgICAgICAiTElDRU5DSUEiCklEU19MSUNFTlNFLAoiVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBcCm1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgXAp2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblwKVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIFwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgXApNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBcCkxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgXApMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIFwKRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQSIKCklEU19XQVJSQU5UWV9DQVBUSU9OLCAgICAgICAgICAgIlNJTiBHQVJBTlTNQSIKSURTX1dBUlJBTlRZLAoiVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIFwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgXApNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBcCkxlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuIgp9Cg==