LyoKICogUHJvZ3JhbSBNYW5hZ2VyCiAqCiAqIENvcHlyaWdodCAxOTk2IFVscmljaCBTY2htaWQKICogRnJlbmNoIEZyLnJjIGJ5IFBhYmxvIFNhcmF0eGFnYQogKiBDb3B5cmlnaHQgMjAwMiBTeWx2YWluIFBldHJlb2xsZQogKiBDb3B5cmlnaHQgMjAwNiBKb25hdGhhbqBFcm5zdAogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0ZSRU5DSCwgU1VCTEFOR19ORVVUUkFMCgovKiBNZW51ICovCgpNQUlOX01FTlUgTUVOVQp7CiBQT1BVUCAiJkZpY2hpZXIiIHsKICAgTUVOVUlURU0gIiZOb3V2ZWF1Li4uIiwgICAgICAgICAgICAgIFBNX05FVwogICBNRU5VSVRFTSAiTyZ1dnJpclx0RW50cullIiwgICAgICAgICAgICAgUE1fT1BFTgogICBNRU5VSVRFTSAiJkTpcGxhY2VyLi4uXHRGNyIsICAgICAgICAgICAgIFBNX01PVkUsICAgICAgR1JBWUVECiAgIE1FTlVJVEVNICImQ29waWVyLi4uXHRGOCIsICAgICAgICAgICAgIFBNX0NPUFksICAgICAgR1JBWUVECiAgIE1FTlVJVEVNICImU3VwcHJpbWVyXHRTdXBwciIsICAgICAgICAgICBQTV9ERUxFVEUKICAgTUVOVUlURU0gIiZQcm9wcmnpdOlzLi4uXHRBbHQrRW50cullIiwgICAgICAgUE1fQVRUUklCVVRFUwogICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgTUVOVUlURU0gIkUmeOljdXRlci4uLiIsICAgICAgICAgIFBNX0VYRUNVVEUKICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgIE1FTlVJVEVNICImUXVpdHRlciBXaW5kb3dzLi4uIiwgICAgICAgICAgICAgUE1fRVhJVAogfQogUE9QVVAgIiZPcHRpb25zIiB7CiAgIE1FTlVJVEVNICJS6W9yZyZhbmlzYXRpb24gYXV0b21hdGlxdWUiLCAgUE1fQVVUT19BUlJBTkdFCiAgIE1FTlVJVEVNICImUulkdWlyZSDgIGwndXRpbGlzYXRpb24iLCAgICBQTV9NSU5fT05fUlVOCiAgIE1FTlVJVEVNICImRW5yZWdpc3RyZXIgbGEgY29uZmlndXJhdGlvbiBlbiBxdWl0dGFudCIsIFBNX1NBVkVfU0VUVElOR1MKIH0KIFBPUFVQICJGJmVu6nRyZXMiIHsKICAgTUVOVUlURU0gIiZDYXNjYWRlXHRNYWorRjUiLCAgICAgICBQTV9PVkVSTEFQCiAgIE1FTlVJVEVNICImTW9zYe9xdWVcdE1haitGNCIsICBQTV9TSURFX0JZX1NJREUKICAgTUVOVUlURU0gIiZS6W9yZ2FuaXNlciBsZXMgaWP0bmVzIiwgICAgICAgUE1fQVJSQU5HRQogfQogCiBQT1BVUCAiQWlkJmUiIHsKICAgTUVOVUlURU0gIiZTb21tYWlyZSIsICAgICAgICAgUE1fQ09OVEVOVFMKICAgTUVOVUlURU0gIiZSZWNoZXJjaGVyLi4uIiwgICAgICAgICAgIFBNX1NFQVJDSAogICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgTUVOVUlURU0gIiZVdGlsaXNlciBsJ2FpZGUiLCAgICAgUE1fSEVMUE9OSEVMUAogICBNRU5VSVRFTSAiRGlkYWN0aWNpZWwgJldpbmRvd3MiLCAgICAgICAgIFBNX1RVVE9SSUFMCiAgIE1FTlVJVEVNIFNFUEFSQVRPUgoKICAgUE9QVVAgIiZJbmZvLi4uIiB7CiAgICAgTUVOVUlURU0gIiZMaWNlbmNlIiwgICAgICAgIFBNX0xJQ0VOU0UKICAgICBNRU5VSVRFTSAiQVVDVU5FICZHQVJBTlRJRSIsICAgIFBNX05PX1dBUlJBTlRZCiAgICAgTUVOVUlURU0gIsAgJnByb3BvcyBkZSBXaW5lIiwgICAgIFBNX0FCT1VUX1dJTkUKICAgfQogfQp9CgovKiBEaWFsb2cgYE5ldycgKi8KCkRJQUxPR19ORVcgRElBTE9HIDAsIDAsIDE3MCwgNjUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTm91dmVhdSIKewpSQURJT0JVVFRPTiAgICIiLCAgICAgICAgICAgICAgICAgUE1fTkVXX0dST1VQLCAgICAxMCwgMTUsICAxMCwgMTUKTFRFWFQgICAgICAgICAiJkdyb3VwZSBkZSBwcm9ncmFtbWVzIiwgICAtMSwgICAgMjAsIDE4LCAgODAsIDE1ClJBRElPQlVUVE9OICAgIiIsICAgICAgICAgICAgICAgICBQTV9ORVdfUFJPR1JBTSwgIDEwLCAzNSwgIDEwLCAxNQpMVEVYVCAgICAgICAgICImUHJvZ3JhbW1lIiwgLTEsICAyMCwgMzgsICA4MCwgMTUKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgICBJRE9LLCAgICAgICAgICAgMTA1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBbm51bGVyIiwgICAgICBJRENBTkNFTCwgICAgICAgMTA1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBaWQmZSIsICAgICAgICBQTV9IRUxQLCAgICAgICAgMTA1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYE1vdmUnICovCgpESUFMT0dfTU9WRSBESUFMT0cgMCwgMCwgMjUwLCA2NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJE6XBsYWNlciB1biBwcm9ncmFtbWUiCnsKTFRFWFQgICAgICAgICAiROlwbGFjZXIgbGUgcHJvZ3JhbW1loDoiLCAgICAtMSwgICAgICAgICAgICA1LCAgNSwgIDkwLCAxNQpMVEVYVCAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgIFBNX1BST0dSQU0sICAgICAgICAgOTUsICA1LCAgOTAsIDE1CkxURVhUICAgICAgICAgIsAgcGFydGlyIGR1IGdyb3VwZaA6IiwgLTEsICAgICAgICAgICAgNSwgMTMsICA5MCwgMTUKTFRFWFQgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICBQTV9GUk9NX0dST1VQLCAgICAgIDk1LCAxMywgIDkwLCAxNQpMVEVYVCAgICAgICAgICImVmVycyBsZSBncm91cGWgOiIsICAgUE1fVE9fR1JPVVBfVFhULCAgICAgNSwgMjgsIDE0MCwgMTUKQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9UT19HUk9VUCwgICAgICAgICA1LCAzOCwgMTQwLCA1MCwgV1NfVEFCU1RPUCB8IENCU19EUk9QRE9XTkxJU1QKREVGUFVTSEJVVFRPTiAiT0siLCAgICAgICAgICAgICAgSURPSywgICAgICAgICAgICAgIDE4NSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQW5udWxlciIsICAgICAgICAgIElEQ0FOQ0VMLCAgICAgICAgICAxODUsIDI1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkFpZCZlIiwgICAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTg1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYENvcHknICovCgpESUFMT0dfQ09QWSBESUFMT0cgMCwgMCwgMjUwLCA2NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJDb3BpZXIgdW4gcHJvZ3JhbW1lIgp7CkxURVhUICAgICAgICAgIkNvcGllciBsZSBwcm9ncmFtbWWgOiIsICAgIC0xLCAgICAgICAgICAgIDUsICA1LCAgOTAsIDE1CkxURVhUICAgICAgICAgIiIsICAgICAgICAgICAgICAgICAgICAgUE1fUFJPR1JBTSwgICAgICAgICA5NSwgIDUsICA5MCwgMTUKTFRFWFQgICAgICAgICAiwCBwYXJ0aXIgZHUgZ3JvdXBloDoiLCAtMSwgICAgICAgICAgICA1LCAxMywgIDkwLCAxNQpMVEVYVCAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgIFBNX0ZST01fR1JPVVAsICAgICAgOTUsIDEzLCAgOTAsIDE1CkxURVhUICAgICAgICAgIiZWZXJzIGxlIGdyb3VwZaA6IiwgICBQTV9UT19HUk9VUF9UWFQsICAgICA1LCAyOCwgMTQwLCAxNQpDT01CT0JPWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1RPX0dST1VQLCAgICAgICAgIDUsIDM4LCAxNDAsIDUwLCBXU19UQUJTVE9QIHwgQ0JTX0RST1BET1dOTElTVApERUZQVVNIQlVUVE9OICJPSyIsICAgICAgICAgICAgICBJRE9LLCAgICAgICAgICAgICAgMTg1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBbm51bGVyIiwgICAgICAgICAgSURDQU5DRUwsICAgICAgICAgIDE4NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQWlkJmUiLCAgICAgICAgICAgIFBNX0hFTFAsICAgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgR3JvdXAgYXR0cmlidXRlcycgKi8KCkRJQUxPR19HUk9VUCBESUFMT0cgMCwgMCwgMjMwLCA2NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJQcm9wcmnpdOlzIGRlIGdyb3VwZSIKewpMVEVYVCAgICAgIiZOb20gOiIsIFBNX0RFU0NSSVBUSU9OX1RYVCwgICAwNSwgMTgsICA1MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fREVTQ1JJUFRJT04sICAgICAgIDYwLCAxOCwgIDkwLCAxNSwgV1NfVEFCU1RPUApMVEVYVCAgICAgIiZGaWNoaWVyIGR1IGdyb3VwZaA6IiwgICAgICAgIFBNX0ZJTEVfVFhULCAgICAgICAgICAwNSwgMzgsICA1MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fRklMRSwgICAgICAgICAgICAgIDYwLCAzOCwgIDkwLCAxNSwgV1NfVEFCU1RPUApERUZQVVNIQlVUVE9OICJPSyIsICAgICAgICAgICAgSURPSywgICAgICAgICAgICAgICAgMTU1LCAgNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBbm51bGVyIiwgICAgICAgIElEQ0FOQ0VMLCAgICAgICAgICAgIDE1NSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQWlkJmUiLCAgICAgICAgICBQTV9IRUxQLCAgICAgICAgICAgICAxNTUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QCn0KCi8qIERpYWxvZyBgUHJvZ3JhbSBhdHRyaWJ1dGVzJyAqLwoKRElBTE9HX1BST0dSQU0gRElBTE9HIDAsIDAsIDI1MCwgMTA1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlByb3Byael06XMgZGUgcHJvZ3JhbW1lIgp7CkxURVhUICAgICAgICAgIiZOb22gOiIsICBQTV9ERVNDUklQVElPTl9UWFQsICAgMDUsIDEwLCAgNjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9ERVNDUklQVElPTiwgICAgICAgODAsIDEwLCAgOTAsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIiZMaWduZSBkZSBjb21tYW5kZaA6IiwgUE1fQ09NTUFORF9MSU5FX1RYVCwgIDA1LCAyNSwgIDYwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE1fQ09NTUFORF9MSU5FLCAgICAgIDgwLCAyNSwgIDkwLCAxNSwgV1NfVEFCU1RPUApMVEVYVCAgICAgICAgICJS6XBlcnRvaXJlIGRlIHRyYSZ2YWlsoDoiLCAgICBQTV9ESVJFQ1RPUllfVFhULCAgICAgMDUsIDQwLCAgNjAsIDEwCkVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9ESVJFQ1RPUlksICAgICAgICAgODAsIDQwLCAgOTAsIDE1LCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIiZUb3VjaGUgZGUgcmFjY291cmNpoDoiLCAgICAgIFBNX0hPVF9LRVlfVFhULCAgICAgICAwNSwgNTUsICA2MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0hPVF9LRVksICAgICAgICAgICA4MCwgNTUsICA5MCwgMTUsIFdTX1RBQlNUT1AKSUNPTiAgICAgICAgICAiIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX0lDT04sICAgICAgICAgICAgICAyMCwgNzAKQ0hFQ0tCT1ggICAgICAiIiwgICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1NZTUJPTCwgICAgICAgICAgICA4MCwgNzUsICAxMCwgMTAsIFdTX1RBQlNUT1AKTFRFWFQgICAgICAgICAiUulkdWlyZSDgIGwnJnV0aWxpc2F0aW9uIiwgICAgICAgLTEsICAgICAgICAgICAgIDk1LCA3NSwgIDc1LCAxMApERUZQVVNIQlVUVE9OICJPSyIsICAgICAgICAgICAgICAgICAgIElET0ssICAgICAgICAgICAgICAgIDE4NSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQW5udWxlciIsICAgICAgICAgICAgICAgSURDQU5DRUwsICAgICAgICAgICAgMTg1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJQYSZyY291cmlyLi4uIiwgICAgICAgICAgICAgICBQTV9CUk9XU0UsICAgICAgICAgICAxODUsIDQ1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIiZDaGFuZ2VyIGwnaWP0bmUuLi4iLCBQTV9PVEhFUl9TWU1CT0wsICAgICAxODUsIDY1LCAgNjAsIDE1LCBXU19UQUJTVE9QClBVU0hCVVRUT04gICAgIkFpZCZlIiwgICAgICAgICAgICAgICAgIFBNX0hFTFAsICAgICAgICAgICAgIDE4NSwgODUsICA2MCwgMTUsIFdTX1RBQlNUT1AKfQoKLyogRGlhbG9nIGBTeW1ib2wnICovCgpESUFMT0dfU1lNQk9MIERJQUxPRyAwLCAwLCAyMDAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkNoYW5nZXIgbCdpY/RuZSIKewpMVEVYVCAgICAgIiZOb20gZHUgZmljaGllcqA6IiwgICAgUE1fSUNPTl9GSUxFX1RYVCwgICAgNSwgMTUsICA0MCwgMTAKRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgUE1fSUNPTl9GSUxFLCAgICAgICA0NSwgMTUsICA4NSwgMTUsIFdTX1RBQlNUT1AKTFRFWFQgICAgICJJY/RuZSBhJmN0dWVsbGWgOiIsIFBNX1NZTUJPTF9MSVNUX1RYVCwgIDUsIDMwLCAxMjUsIDEwCkNPTUJPQk9YICAgICAgICAgICAgICAgICAgICAgICAgIFBNX1NZTUJPTF9MSVNULCAgICAgIDUsIDQwLCAxMjUsIDUwLAogICBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgV1NfVEFCU1RPUApERUZQVVNIQlVUVE9OICJPSyIsICAgICAgICAgSURPSywgICAgICAgICAgICAgIDEzNSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQW5udWxlciIsICAgICBJRENBTkNFTCwgICAgICAgICAgMTM1LCAyNSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJQYSZyY291cmlyLi4uIiwgICAgUE1fQlJPV1NFLCAgICAgICAgIDEzNSwgNDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQWlkJmUiLCAgICAgICBQTV9IRUxQLCAgICAgICAgICAgMTM1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBEaWFsb2cgYEV4ZWN1dGUnICovCgpESUFMT0dfRVhFQ1VURSBESUFMT0cgMCwgMCwgMjAwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFeOljdXRlciB1biBwcm9ncmFtbWUiCnsKTFRFWFQgICAgICImTGlnbmUgZGUgY29tbWFuZGWgOiIsIC0xLCAgIDA1LCAxNSwgMTIwLCAxMApFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTV9DT01NQU5ELCAwNSwgMjUsIDEyMCwgMTUsIFdTX1RBQlNUT1AKQ0hFQ0tCT1ggICAgICAiIiwgICAgICAgICAgICAgICAgICAgICAgUE1fU1lNQk9MLCAgMDUsIDQ1LCAgMTAsIDEwLCBXU19UQUJTVE9QCkxURVhUICAgICAgICAgIlLpZHVpcmUg4CBsJyZ1dGlsaXNhdGlvbiIsICAgLTEsICAgMjAsIDQ1LCAxMjAsIDEwCkRFRlBVU0hCVVRUT04gIk9LIiwgICAgICAgICAgICAgICBJRE9LLCAgICAgIDEzNSwgIDUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiQW5udWxlciIsICAgICAgICAgICBJRENBTkNFTCwgIDEzNSwgMjUsICA2MCwgMTUsIFdTX1RBQlNUT1AKUFVTSEJVVFRPTiAgICAiUGEmcmNvdXJpci4uLiIsICAgICAgICAgIFBNX0JST1dTRSwgMTM1LCA0NSwgIDYwLCAxNSwgV1NfVEFCU1RPUApQVVNIQlVUVE9OICAgICJBaWQmZSIsICAgICAgICAgICAgIFBNX0hFTFAsICAgMTM1LCA2NSwgIDYwLCAxNSwgV1NfVEFCU1RPUAp9CgovKiBTdHJpbmdzICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQp7CklEU19QUk9HUkFNX01BTkFHRVIsCQkiR2VzdGlvbmFpcmUgZGUgcHJvZ3JhbW1lcyIKSURTX0VSUk9SLAkJCSJFUlJFVVIiCklEU19XQVJOSU5HLAkJCSJBVFRFTlRJT04iCklEU19JTkZPLAkJCSJJbmZvcm1hdGlvbiIKSURTX0RFTEVURSwJCQkiU3VwcHJpbWVyIgpJRFNfREVMRVRFX0dST1VQX3MsCQkiVm91bGV6LXZvdXMgc3VwcHJpbWVyIGxlIGdyb3VwZSCroCVzoLugPyIKSURTX0RFTEVURV9QUk9HUkFNX3MsCQkiVm91bGV6LXZvdXMgc3VwcHJpbWVyIGxlIHByb2dyYW1tZSCroCVzoLugPyIKSURTX05PVF9JTVBMRU1FTlRFRCwJCSJOb24gaW1wbGVtZW506SIKSURTX0ZJTEVfUkVBRF9FUlJPUl9zLAkJIkltcG9zc2libGUgZCdvdXZyaXIgq6Alc6C7LiIKSURTX0ZJTEVfV1JJVEVfRVJST1JfcywJCSJJbXBvc3NpYmxlIGQnZW5yZWdpc3RyZXIgq6Alc6C7LiIKSURTX0dSUEZJTEVfUkVBRF9FUlJPUl9zLAkiXApJbXBvc3NpYmxlIGQnb3V2cmlyIGxlIGdyb3VwZSCroCVzoLsuXG5cClZvdWxlei12b3VzIHF1ZSBsZSBHZXN0aW9ubmFpcmUgZGUgcHJvZ3JhbW1lcyBlc3NhaWVcblwKZGUgbCdvdXZyaXIgZGFucyBsZXMgcHJvY2hhaW5lcyBzZXNzaW9uc6A/IgpJRFNfT1VUX09GX01FTU9SWSwJCSJN6W1vaXJlIGluc3VmZmlzYW50ZS4iCklEU19XSU5IRUxQX0VSUk9SLAkJIkltcG9zc2libGUgZCdhZmZpY2hlciBsJ2FpZGUuIgpJRFNfVU5LTk9XTl9GRUFUVVJFX3MsCQkiQ2FyYWN06XJpc3RpcXVlIGluY29ubnVlIGRhbnMgJXMiCklEU19GSUxFX05PVF9PVkVSV1JJVFRFTl9zLAkiTGUgZmljaGllciCroCVzoLsgZXhpc3RlLiBOb24g6WNyYXPpLiIKSURTX1NBVkVfR1JPVVBfQVNfcywJCSJHcm91cGUgZW5yZWdpc3Ry6SBzb3VzIKugJXOguyBwb3VyIOl2aXRlciBsJ+ljcmFzZW1lbnQgZHUgZmljaGllciBvcmlnaW5hbC4iCklEU19OT19IT1RfS0VZLAkJCSJBdWN1biIKSURTX0FMTF9GSUxFUywJCQkiVG91cyBmaWNoaWVycyAoKi4qKSIKSURTX1BST0dSQU1TLAkJCSJQcm9ncmFtbWVzIgpJRFNfTElCUkFSSUVTX0RMTCwJCSJCaWJsaW90aOhxdWVzICgqLmRsbCkiCklEU19TWU1CT0xfRklMRVMsCQkiSWP0bmVzIgpJRFNfU1lNQk9MU19JQ08sCQkiSWP0bmVzICgqLmljbykiCn0KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFIExBTkdVQUdFIExBTkdfRlJFTkNILCBTVUJMQU5HX05FVVRSQUwKewpJRFNfTElDRU5TRV9DQVBUSU9OLCAgICAgICAgICAgICJMSUNFTkNFIgpJRFNfTElDRU5TRSwKIkNlIHByb2dyYW1tZSBlc3QgdW4gbG9naWNpZWwgbGlicmWgOyB2b3VzIHBvdXZleiBsZSByZWRpc3RyaWJ1ZXIgZXQvb3UgXApsZSBtb2RpZmllciBzdWl2YW50IGxlcyB0ZXJtZXMgZGUgbGEgTGljZW5jZSBH6W7pcmFsZSBQdWJsaXF1ZSBMaW1pdOllIEdOVSBcCnRlbGxlIHF1ZSBwdWJsaellIHBhciBsYSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb26gOyBzb2l0IGxhIHZlcnNpb24gMi4xIFwKZGUgbGEgTGljZW5zZSwgc29pdCAo4CB2b3RyZSBncukpIHRvdXRlIHZlcnNpb24gdWx06XJpZXVyZS5cblwKQ2UgcHJvZ3JhbW1lIGVzdCBkaXN0cmlidekgZGFucyBsJ2VzcG9pciBxdSdpbCBzZXJhIHV0aWxlLCBtYWlzIFwKU0FOUyBBVUNVTkUgR0FSQU5USUWgOiBzYW5zIG3qbWUgbGEgZ2FyYW50aWUgaW1wbGljaXRlIGRlIFwKQ09NTUVSQ0lBTElTQUJJTElUySBvdSBkJ0FEyVFVQVRJT04gwCBVTiBPQkpFQ1RJRiBQQVJUSUNVTElFUi4gQ29uc3VsdGV6IFwKbGEgTGljZW5jZSBH6W7pcmFsZSBQdWJsaXF1ZSBMaW1pdOllIHBvdXIgcGx1cyBkZSBk6XRhaWxzLlxuXApWb3VzIGRldnJpZXogYXZvaXIgcmXndSB1bmUgY29waWUgZGUgbGEgTGljZW5jZSBH6W7pcmFsZSBQdWJsaXF1ZSBMaW1pdOllIFwKR05VIGF2ZWMgY2UgcHJvZ3JhbW1loDsgc2kgY2Ugbidlc3QgcGFzIGxlIGNhcywg6WNyaXZleiDgIGxhoDogXApGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBcCk1BIDAyMTEwLTEzMDEsIFVTQS4iCgpJRFNfV0FSUkFOVFlfQ0FQVElPTiwgIkFVQ1VORSBHQVJBTlRJRSIKSURTX1dBUlJBTlRZLAoiQ2UgcHJvZ3JhbW1lIGVzdCBkaXN0cmlidekgZGFucyBsJ2VzcG9pciBxdSdpbCBzZXJhIHV0aWxlLCBtYWlzIFwKU0FOUyBBVUNVTkUgR0FSQU5USUWgOiBzYW5zIG3qbWUgbGEgZ2FyYW50aWUgaW1wbGljaXRlIGRlIFwKQ09NTUVSQ0lBTElTQUJJTElUySBvdSBkJ0FEyVFVQVRJT04gwCBVTiBPQkpFQ1RJRiBQQVJUSUNVTElFUi4gQ29uc3VsdGV6IFwKbGEgTGljZW5jZSBH6W7pcmFsZSBQdWJsaXF1ZSBMaW1pdOllIHBvdXIgcGx1cyBkZSBk6XRhaWxzLiIKfQo=