LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBGcmVuY2ggKENhbmFkYSkKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19GUkVOQ0gsIFNVQkxBTkdfRlJFTkNIX0NBTkFESUFOCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAxM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMiIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjk3IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwYzBjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkxIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNiIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjBjMGMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiNCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMCIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiMSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJDQU4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAibHVuLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJtYXIuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIm1lci4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiamV1LiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJ2ZW4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgInNhbS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiZGltLiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJGUkMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJqYW52LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImbpdnIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibWFycyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImF2ci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJqdWluIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAianVpbC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhb/t0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAic2VwdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2N0LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJub3YuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImTpYy4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQ2FuYWRhIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIiQiCiAgTE9DQUxFX1NEQVRFICItIgogIExPQ0FMRV9TREFZTkFNRTEgImx1bmRpIgogIExPQ0FMRV9TREFZTkFNRTIgIm1hcmRpIgogIExPQ0FMRV9TREFZTkFNRTMgIm1lcmNyZWRpIgogIExPQ0FMRV9TREFZTkFNRTQgImpldWRpIgogIExPQ0FMRV9TREFZTkFNRTUgInZlbmRyZWRpIgogIExPQ0FMRV9TREFZTkFNRTYgInNhbWVkaSIKICBMT0NBTEVfU0RBWU5BTUU3ICJkaW1hbmNoZSIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJDYW5hZGEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiQ2FuYWRpYW4gRG9sbGFyIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkZyZW5jaCIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJDQUQiCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkNBIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImZyIgogIExPQ0FMRV9TTEFOR1VBR0UgIkZyZW5jaCAoQ2FuYWRhKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZCBNTU1NLCB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW52aWVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZul2cmllciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhdnJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haSIKICBMT0NBTEVfU01PTlRITkFNRTYgImp1aW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJqdWlsbGV0IgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYW/7dCIKICBMT0NBTEVfU01PTlRITkFNRTkgInNlcHRlbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEwICJvY3RvYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm5vdmVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImTpY2VtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIkNhbmFkYSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJEb2xsYXIgY2FuYWRpZW4iCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAiZnJhbudhaXMiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAieXl5eS1NTS1kZCIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIqAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0sIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkV1cm9wZSBvY2NpZGVudGFsZSBldCDJdGF0cy1VbmlzIGQnQW3pcmlxdWUiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BlIGNlbnRyYWxlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aXF1ZSIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVjIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGlxdWUiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJjIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcG9uYWlzIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJDb3LpZW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJDaGlub2lzIHRyYWRpdGlvbm5lbCIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiQ2hpbm9pcyBzaW1wbGlmaekiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGHvIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJI6WJyZXUiCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJlIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1pZW4iCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWVuIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkfpb3JnaWVuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybeluaWFuIgp9Cg==