LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBHZXJtYW4gKFN3aXR6ZXJsYW5kKQogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGV3ZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0dFUk1BTiwgU1VCTEFOR19HRVJNQU5fU1dJU1MKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDJmXHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHg0MDAwXHgwMDkzXHgwMDAwXHgwMDAwXHhjZGQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQxIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQxIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI3MyIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDgwNyIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIyIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDgwNyIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjEiCiAgTE9DQUxFX0lORUdDVVJSICIyIgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSU5FR1NJR05QT1NOICI0IgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICI0IgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkNIRSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJNbyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJEaSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJNaSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJEbyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJGciIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJTYSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJTbyIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJERVMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJKYW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJGZWIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJNcnoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJBcHIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJNYWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJKdW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJKdWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJBdWciCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJTZXAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiT2t0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIk5vdiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJEZXoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiU3dpdHplcmxhbmQiCiAgTE9DQUxFX1NDVVJSRU5DWSAiU0ZyLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAiTW9udGFnIgogIExPQ0FMRV9TREFZTkFNRTIgIkRpZW5zdGFnIgogIExPQ0FMRV9TREFZTkFNRTMgIk1pdHR3b2NoIgogIExPQ0FMRV9TREFZTkFNRTQgIkRvbm5lcnN0YWciCiAgTE9DQUxFX1NEQVlOQU1FNSAiRnJlaXRhZyIKICBMT0NBTEVfU0RBWU5BTUU2ICJTYW1zdGFnIgogIExPQ0FMRV9TREFZTkFNRTcgIlNvbm50YWciCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiU3dpdHplcmxhbmQiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiU3dpc3MgRnJhbmMiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiR2VybWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkNIRiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiQ0giCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiZGUiCiAgTE9DQUxFX1NMQU5HVUFHRSAiR2VybWFuIChTd2l0emVybGFuZCkiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQsIGQuIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiSmFudWFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiRmVicnVhciIKICBMT0NBTEVfU01PTlRITkFNRTMgIk3kcnoiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJBcHJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIk1haSIKICBMT0NBTEVfU01PTlRITkFNRTYgIkp1bmkiCiAgTE9DQUxFX1NNT05USE5BTUU3ICJKdWxpIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiQXVndXN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiU2VwdGVtYmVyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIk9rdG9iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAiTm92ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiRGV6ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiciCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiU2Nod2VpeiIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJTY2h3ZWl6ZXIgRnJhbmtlbiIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJEZXV0c2NoIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkLk1NLnl5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICInIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCn0K