LyoKICogV2luZUZpbGUKICogS29yZWFuIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDAgTWFydGluIEZ1Y2hzCiAqIENvcHlyaWdodCAyMDAyIFN0ZXZlbiBFZHdhcmRzCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZAogKiBDb3B5cmlnaHQgMjAwNSBZdW5Tb25nIEh3YW5nCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfS09SRUFOLCBTVUJMQU5HX0RFRkFVTFQKCi8qIE1lbnUgKi8KCklETV9XSU5FRklMRSBNRU5VIEZJWEVEIElNUFVSRQp7CiAgICBQT1BVUCAixsTAzygmRikiICB7CiAgICAgICAgTUVOVUlURU0gIr+tseIoJk8pXHRFbnRlciIsICAgICAgICAgICAgICAgIElEX0FDVElWQVRFCiAgICAgICAgTUVOVUlURU0gIsDMtb8oJk0pLi4uXHRGNyIsICAgICAgICAgICAgICAgIElEX0ZJTEVfTU9WRQogICAgICAgIE1FTlVJVEVNICK6ubvnKCZDKS4uLlx0RjgiLCAgICAgICAgICAgICAgICBJRF9GSUxFX0NPUFkKICAgICAgICBNRU5VSVRFTSAixay4s7q4teW3zigmSSkuLi5cdEY5IiwgICAgICAgIDExOAogICAgICAgIE1FTlVJVEVNICLB9r/sseIoJkQpXHREZWwiLCAgICAgICAgICAgICAgICBJRF9GSUxFX0RFTEVURQogICAgICAgIE1FTlVJVEVNICLAzLinudmy2bHiKCZuKS4uLiIsICAgICAgICAgICAgICAgICAgMTA5CiAgICAgICAgTUVOVUlURU0gIrzTvLooJmkpLi4uXHRBbHQrRW50ZXIiLCAgIElEX0VESVRfUFJPUEVSVElFUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK+0MPgKCZvKS4uLiIsICAgICAgICAgICAgICAgIDExOQogICAgICAgIE1FTlVJVEVNICK+0MPgIMeuseIoJm8pLi4uIiwgICAgICAgICAgICAgIDEyMAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK9x8fgKCZSKS4uLiIsICAgICAgICAgICAgICAgICAgICAgSURfRVhFQ1VURQogICAgICAgIE1FTlVJVEVNICLAzrziKCZQKS4uLiIsICAgICAgICAgICAgICAgICAgIDEwMgogICAgICAgIE1FTlVJVEVNICK/rLDhLi4uIiwgICAgICAgICAgICAgICAgMTAzCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrXwt7rF5LiuILi4temx4igmZSkuLi4iLCAgICAgICAgMTExCiAgICAgICAgTUVOVUlURU0gIsOjseIoJmgpLi4uIiwgICAgICAgICAgICAgICAgICAxMDQKICAgICAgICBNRU5VSVRFTSAixsTAzyC8scXDKCZTKS4uLiIsICAgICAgICAgICAgMTE2CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiNpZm5kZWYgX05PX0VYVEVOU0lPTlMKICAgICAgICBNRU5VSVRFTSAis6qwobHiKEV4KVx0QWx0K1giLCAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2Vsc2UKICAgICAgICBNRU5VSVRFTSAis6qwobHiKCZ4KSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9GSUxFX0VYSVQKI2VuZGlmCiAgICB9CgogICAgUE9QVVAgIrXwvbrFqSgmRCkiICB7CiAgICAgICAgTUVOVUlURU0gIrXwvbrFqSC6ubvnKCZDKS4uLiIsICAgICAgICAgICAgICAgMjAxCiAgICAgICAgTUVOVUlURU0gIrXwvbrFqSC287qnKCZMKS4uLiIsICAgICAgICAgICAgICAyMDIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAitfC9usWpIMb3uMsoJkYpLi4uIiwgICAgICAgICAgICAgSURfRk9STUFUX0RJU0sKI2lmZGVmIF9XSU45NQogICAgICAgIE1FTlVJVEVNICK9w726xdsgtfC9usWpILi4temx4igmTSkuLi4iLCAtMSAvKlRPRE8qLwojZW5kaWYKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAis9fGrr/2xakgteW288DMuuogv6yw4SgmTikiLCAgICAgIElEX0NPTk5FQ1RfTkVUV09SS19EUklWRQogICAgICAgIE1FTlVJVEVNICKz18auv/bFqSC15bbzwMy66iC/rLDhILL3seIoJkQpIiwgICBJRF9ESVNDT05ORUNUX05FVFdPUktfRFJJVkUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAisPjAry4uLiIsICAgICAgICAgICAgICAgICAyNTQKICAgICAgICBNRU5VSVRFTSAisPjAryDBprDFKCZSKS4uLiIsICAgICAgICAgICAgMjU1CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIrXltvPAzLrqILyxxcMoJlMpLi4uIiwgICAgICAgICAgICAyNTEKICAgIH0KCiAgICBQT1BVUCAitfC3usXkuK4oJnIpIiAgewogICAgICAgIE1FTlVJVEVNICK02cC9ILTcsOgoJk4pXHQrIiwgICAgICAgICAgICAgIDMwMQogICAgICAgIE1FTlVJVEVNICLGrriuIMiuwOUoJlQpXHQqIiwgICAgICAgICAgICAgMzAyCiAgICAgICAgTUVOVUlURU0gIrjwtc4gyK7A5SgmYSlcdFN0cmcrKiIsICAgICAgICAgMzAzCiAgICAgICAgTUVOVUlURU0gIsauuK4gwaS4rigmVClcdC0iLCAgICAgICAgICAgMzA0CiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsfPwKcgw7zFqSgmTSkiLCAgICAgICAgICAgICAgNTA1CiAgICB9CgogICAgUE9QVVAgIrq4seIoJlYpIiAgewogICAgICAgIE1FTlVJVEVNICLGrriuIMfPsO0gseK3usXkuK4oJnIpIiwgICAgICAgICA0MTMKICAgICAgICBNRU5VSVRFTSAiv8DB9yDGrriuuLgoJmUpIiwgICAgICAgICAgICAgICAgICA0MTEKICAgICAgICBNRU5VSVRFTSAiv8DB9yC18Le6xeS4rri4KCZPKSIsICAgICAgICAgICAgIDQxMgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICKzqrSpseIoJmwpIiwgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICLAzLinKCZOKSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX05BTUUKICAgICAgICBNRU5VSVRFTSAiuPC15yDGxMDPILyzuO0oJkEpIiwgICAgICAgICAgIElEX1ZJRVdfQUxMX0FUVFJJQlVURVMsIENIRUNLRUQKICAgICAgICBNRU5VSVRFTSAius660CC8s7jtKCZQKS4uLiIsICAgICAgICAgSURfVklFV19TRUxFQ1RFRF9BVFRSSUJVVEVTCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIsDMuKfAuLfOIMGkt8QoJlMpIiwgICAgICAgICAgICAgICBJRF9WSUVXX1NPUlRfTkFNRQogICAgICAgIE1FTlVJVEVNICLFuMDUwLi3ziDBpLfEKCZiKSIsICAgICAgICAgICAgICAgSURfVklFV19TT1JUX1RZUEUKICAgICAgICBNRU5VSVRFTSAixamx4rfOIMGkt8QoJnopIiwgICAgICAgICAgICAgICBJRF9WSUVXX1NPUlRfU0laRQogICAgICAgIE1FTlVJVEVNICKzr8Klt84gwaS3xCgmRCkiLCAgICAgICAgICAgICAgIElEX1ZJRVdfU09SVF9EQVRFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiYuLi63ziC/qbD6IiwgICAgICAgICAgICAgIElEX1ZJRVdfRklMVEVSCiAgICB9CgogICAgUE9QVVAgIr/JvMcoJk8pIiAgewogICAgICAgIE1FTlVJVEVNICLIrsDOKCZDKS4uLiIsICAgICAgICAgICAgNTAxCiAgICAgICAgTUVOVUlURU0gIrHbssMoJkYpLi4uIiwgICAgICAgICAgICAgICAgICAgIElEX1NFTEVDVF9GT05UCiAgICAgICAgTUVOVUlURU0gIrW1sbi52SC757/rwNogwaTAxygmYikuLi4iLCAgICAgICA1MTIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAitbWxuLnZKCZUKSIsICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1RPT0xfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIrXltvPAzLrqILnZKCZEKSIsICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfRFJJVkVfQkFSLCBDSEVDS0VECiAgICAgICAgTUVOVUlURU0gIrvzxcK52SgmUykiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIsIENIRUNLRUQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICLA/MO8IMituOkoJnUpXHRDdHJsK1NoaWZ0K1MiLCAgSURfVklFV19GVUxMU0NSRUVOCiNlbmRpZgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICK9x8fgvcMgw9a80sitKCZNKSIsICAgICAgICAgICAgNTA0CiAgICAgICAgTUVOVUlURU0gIrOqsKW2pyC8s8GkIMD6wOUoJlMpIiwgICAgICA1MTEKICAgIH0KCgogICAgUE9QVVAgIrq4vsgoJlMpIiAgewogICAgICAgIE1FTlVJVEVNICLBorHZKCZBKS4uLiIsICAgICAgICAgICAgICAgICAgNjA1CiAgICAgICAgTUVOVUlURU0gIrfOsesoJkwpLi4uIiwgICAgICAgICAgICAgICAgIDYwNgogICAgICAgIE1FTlVJVEVNICK80sCvwNooJk8pLi4uIiwgICAgICAgICAgICAgICAgICAgNjA3CiAgICB9CgogICAgUE9QVVAgIsOiKCZXKSIgIHsKICAgICAgICBNRU5VSVRFTSAiu/Ugw6IoJlcpIiwgICAgICAgICAgICAgICAgIElEX1dJTkRPV19ORVcKICAgICAgICBNRU5VSVRFTSAiwaS3xFx0Q3RybCtGNSIsICAgICAgICAgIElEX1dJTkRPV19DQVNDQURFCiAgICAgICAgTUVOVUlURU0gIrCht84gudm1z8bHvcQgwaS3xCgmSCkiLCAgICAgICAgICBJRF9XSU5ET1dfVElMRV9IT1JaCiAgICAgICAgTUVOVUlURU0gIry8t84gudm1z8bHvcQgwaS3xCgmVilcdEN0cmwrRjQiLCAgIElEX1dJTkRPV19USUxFX1ZFUlQKI2lmbmRlZiBfTk9fRVhURU5TSU9OUwogICAgICAgIE1FTlVJVEVNICLA2rW/IMGkt8QiLCAgICAgICBJRF9XSU5ET1dfQVVUT1NPUlQKI2VuZGlmCiAgICAgICAgTUVOVUlURU0gIr3Jufq3ziDBpLfEKCZTKSIsICAgICAgICAgICAgSURfV0lORE9XX0FSUkFOR0UKICAgICAgICBNRU5VSVRFTSAiu/W3ziDA0LHiKCZSKVx0RjUiLCAgICAgICAgICAgICAgICBJRF9SRUZSRVNICiAgICB9CgogICAgUE9QVVAgIrW1v/K4uygmSCkiICB7CiAgICAgICAgTUVOVUlURU0gIrW1v/K4uyC48cL3KCZIKVx0RjEiLCAgICAgICAgICAgIElEX0hFTFAKICAgICAgICBNRU5VSVRFTSAitbW/8ri7IMOjseIoJlMpLi4uXHRGMSIsICAgICAgICAgSURfSEVMUAogICAgICAgIE1FTlVJVEVNICK1tb/yuLsgu+e/67n9KCZVKVx0RjEiLCAgICAgICAgICAgICBJRF9IRUxQX1VTSU5HCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIldpbmVmaWxlILD8t8MgwaS6uCgmSSkuLi4iLCAgICAgSURfQUJPVVQKI2lmZGVmIF9fV0lORV9fCiAgICAgICAgTUVOVUlURU0gIiZXaW5lILD8t8MgwaS6uC4uLiIsICAgICAgICAgSURfQUJPVVRfV0lORQojZW5kaWYKICAgIH0KfQoKCklERF9FWEVDVVRFIERJQUxPRyBGSVhFRCBJTVBVUkUgMTUsIDEzLCAyMTAsIDYzClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIr3Hx+AiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgQ09OVFJPTCAgICAgICAgICIiLCAxMDEsICK788XCIiwgU1NfU0lNUExFfFNTX05PUFJFRklYLCAzLCA2LCAxNjIsIDEwCiAgICBDT05UUk9MICAgICAgICAgIrjtt8koJkMpOiIsIC0xLCAiU3RhdGljIiwgU1NfTEVGVE5PV09SRFdSQVB8V1NfR1JPVVAsIDMsIDE4LCA2MCwgMTAKICAgIEVESVRURVhUICAgICAgICAyMDEsIDMsIDI5LCAxMzQsIDEyLCBFU19BVVRPSFNDUk9MTAogICAgQ09OVFJPTCAgICAgICAgICK9ybn6t84oJlMpIiwgMjE0LCAiQnV0dG9uIiwgQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1AsMywgNDUsIDcxLCAxMgogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIiwgMSwgMTU4LCA2LCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiw+u80iIsIDIsIDE1OCwgMjMsIDQ3LCAxNAogICAgUFVTSEJVVFRPTiAgICAgICK1tb/yuLsoJkgpIiwgMjU0LCAxNTgsIDQzLCA0NywgMTQKfQoKSUREX1NFTEVDVF9ERVNUSU5BVElPTiBESUFMT0cgRklYRUQgSU1QVVJFIDE1LCAxMywgMjEwLCA2MwpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICK48cD7wfYgvLHFwyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiAgICBDT05UUk9MICAgICAgICAgIiIsIDEwMSwgIlN0YXRpYyIsIFNTX1NJTVBMRXxTU19OT1BSRUZJWCwgMywgNiwgMTYyLCAxMAogICAgQ09OVFJPTCAgICAgICAgICKw5rfOKCZQKToiLCAtMSwgIlN0YXRpYyIsIFNTX0xFRlROT1dPUkRXUkFQfFdTX0dST1VQLCAzLCAxOCwgNjAsIDEwCiAgICBFRElUVEVYVCAgICAgICAgMjAxLCAzLCAyOSwgMTM0LCAxMiwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiyK7AziIsIDEsIDE1OCwgNiwgNDcsIDE0CiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLCAyLCAxNTgsIDIzLCA0NywgMTQKICAgIFBVU0hCVVRUT04gICAgICAiw6Ox4igmQikiLCAyNTQsIDE1OCwgNDMsIDQ3LCAxNAp9CgpJRERfRElBTE9HX1ZJRVdfVFlQRSBESUFMT0cgRElTQ0FSREFCTEUgMTUsIDEzLCAxNjEsIDk3ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIsbEwM8gxbjA1MC4t84iCkZPTlQgOCwgIk1TIFNhbnMgU2VyaWYiCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsDMuKcoJk4pOiIsLTEsNyw4LDIyLDEwCiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZJRVdfUEFUVEVSTiwzMSw3LDYzLDEyLEVTX0FVVE9IU0NST0xMCiAgICBHUk9VUEJPWCAgICAgICAgIsbEwM8gxbjA1CIsLTEsNywyMyw4Nyw1NgogICAgQ09OVFJPTCAgICAgICAgICK18Le6xeS4rigmRCkiLElEQ19WSUVXX1RZUEVfRElSRUNUT1JJRVMsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxMywzMiw3MCwxMAogICAgQ09OVFJPTCAgICAgICAgICLHrrHXuLIoJlApIixJRENfVklFV19UWVBFX1BST0dSQU1TLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNDMsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAiua68rcbEwM8oJm0pIixJRENfVklFV19UWVBFX0RPQ1VNRU5UUywiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDEzLDU0LDcwLDEwCiAgICBDT05UUk9MICAgICAgICAgIrTZuKUgxsTAzygmTykiLElEQ19WSUVXX1RZUEVfT1RIRVJTLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTMsNjUsNzAsMTAKICAgIENPTlRST0wgICAgICAgICAivPux6C+9w726xdsgxsTAzyC6uL+pwdax4igmUykiLElEQ19WSUVXX1RZUEVfSElEREVOLAogICAgICAgICAgICAgICAgICAgICK59sawIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDcsODEsMTA2LDkKICAgIERFRlBVU0hCVVRUT04gICAiyK7AziIsSURPSywxMDQsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICLD67zSIixJRENBTkNFTCwxMDQsMjQsNTAsMTQKRU5ECgpJRERfRElBTE9HX1BST1BFUlRJRVMgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNDgsIDIxNQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICIlcyC807y6IgpGT05UIDgsICJNUyBTYW5zIFNlcmlmIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICLIrsDOIixJRE9LLDE5MSw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIsPrvNIiLElEQ0FOQ0VMLDE5MSwyOSw1MCwxNAogICAgTFRFWFQgICAgICAgICAgICLGxMDPIMDMuKcoJkYpOiIsLTEsNyw3LDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfRklMRU5BTUUsNzEsNywxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIr/PwPzH0SCw5rfOKCZQKToiLC0xLDcsMTgsNTksOQogICAgRURJVFRFWFQgICAgICAgIElEQ19TVEFUSUNfUFJPUF9QQVRILDcxLDE4LDEyMCw5LCBFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIri2wfa4tyC6r8itOiIsLTEsNywyOSw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0xBU1RDSEFOR0UsNzEsMjksMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICK59sGvOiIsLTEsNyw0MCw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX1ZFUlNJT04sNzEsNDAsMTIwLDksRVNfUkVBRE9OTFkgfCBOT1QgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICLA+sDbsccoJnkpOiIsLTEsNyw1MSw1OSw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX1NUQVRJQ19QUk9QX0NPUFlSSUdIVCw3MSw1MSwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIsWpseI6IiwtMSw3LDYyLDU5LDkKICAgIEVESVRURVhUICAgICAgICBJRENfU1RBVElDX1BST1BfU0laRSw3MSw2MiwxMjAsOSxFU19SRUFET05MWSB8IE5PVCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIrzTvLoiLC0xLDcsNzksMTU4LDQ2CiAgICBDT05UUk9MICAgICAgICAgIsDQseIgwPy/6ygmUikiLElEQ19DSEVDS19SRUFET05MWSwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDkxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAivPux6CgmaSkiLElEQ19DSEVDS19ISURERU4sIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw5Miw5MSw2OCw5CiAgICBDT05UUk9MICAgICAgICAgIr7GxKvAzLrqKCZBKSIsSURDX0NIRUNLX0FSQ0hJVkUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNywxMDEsNjgsOQogICAgQ09OVFJPTCAgICAgICAgICK9w726xdsoJlMpIixJRENfQ0hFQ0tfU1lTVEVNLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsOTIsMTAxLDY4LDkKICAgIENPTlRST0wgICAgICAgICAivtDD4CgmQykiLElEQ19DSEVDS19DT01QUkVTU0VELCJCdXR0b24iLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE3LDExMSw2OCw5CiAgICBHUk9VUEJPWCAgICAgICAgIrn2wa8gwaS6uCgmVikiLC0xLDcsMTI5LDIzNCw3OQogICAgTElTVEJPWCAgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9UWVBFUywxMywxMzksMTA3LDYzLExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgRURJVFRFWFQgICAgICAgIElEQ19MSVNUX1BST1BfVkVSU0lPTl9WQUxVRVMsMTIzLDEzOSwxMTEsNjMsRVNfTVVMVElMSU5FIHwgRVNfUkVBRE9OTFkgfCBXU19WU0NST0xMCkVORAoKClNUUklOR1RBQkxFCnsKICAgIElEU19GT05UX1NFTF9ETEdfTkFNRSAgICKx27LDILyzwaQgwPu/6yIKICAgIElEU19GT05UX1NFTF9FUlJPUiAgICAgICK79SCx27LDILyxxcMgv6G3ry4iCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19XSU5FRklMRSAgICAgICAgICAgICJXaW5lZmlsZSIKICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICK/obevIgogICAgSURTX1JPT1RfRlMgICAgICAgICAgICAgIrfnxq4gxsTAz73DvbrF2yIKICAgIElEU19VTklYRlMgICAgICAgICAgICAgICLAr7TQvbogxsTAz73DvbrF2yIKICAgIElEU19ERVNLVE9QICAgICAgICAgICAgICK1pb26xanFviIKICAgIElEU19TSEVMTCAgICAgICAgICAgICAgICK8vyIKICAgIElEU19USVRMRUZNVCAgICAgICAgICAgICIlcyAtICVzIgogICAgSURTX05PX0lNUEwgICAgICAgICAgICAgIrnMsbjH9iIKICAgIElEU19XSU5FICAgICAgICAgICAgICAgICJXSU5FIgogICAgSURTX1dJTkVfRklMRSAgICAgICAgICAgIldpbmUgxsTAzyIKfQoKU1RSSU5HVEFCTEUKewogICAgSURTX0NPTF9OQU1FICAgICAgICAgICAgIsDMuKciCiAgICBJRFNfQ09MX1NJWkUgICAgICAgICAgICAixamx4iIKICAgIElEU19DT0xfQ0RBVEUgICAgICAgICAgICK9wyhDRGF0ZSkiCiAgICBJRFNfQ09MX0FEQVRFICAgICAgICAgICAiw8ooQURhdGUpIgogICAgSURTX0NPTF9NREFURSAgICAgICAgICAgIrrQKE1EYXRlKSIKICAgIElEU19DT0xfSURYICAgICAgICAgICAgICLAzrWmvbovvsbAzLPrteUiCiAgICBJRFNfQ09MX0xJTktTICAgICAgICAgICAiuLXFqSIKICAgIElEU19DT0xfQVRUUiAgICAgICAgICAgICK807y6IgogICAgSURTX0NPTF9TRUMgICAgICAgICAgICAgIrq4vsgiCgogICAgSURTX0ZSRUVfU1BBQ0VfRk1UICAgICAgIiVzIG9mICVzILvnv+uwobTJIgp9Cg==