LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIENvcHlyaWdodCAoQykgMTk5OC0yMDA5IFBhY2tldFZpZGVvCiAqCiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAogKgogKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIKICogZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMKICogYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqLwojaWZuZGVmIEFUT01ERUZTX0hfSU5DTFVERUQKI2RlZmluZSBBVE9NREVGU19IX0lOQ0xVREVECgojaWZuZGVmIFBWX01QNEZGUEFSU0VSX0NPTkZJR19IX0lOQ0xVREVECiNpbmNsdWRlICJwdl9tcDRmZnBhcnNlcl9jb25maWcuaCIKI2VuZGlmCgojaWZuZGVmIE9TQ0xfQkFTRV9IX0lOQ0xVREVECiNpbmNsdWRlICJvc2NsX2Jhc2UuaCIKI2VuZGlmCgojaWZuZGVmIE9TQ0xfTUVNX0hfSU5DTFVERUQKI2luY2x1ZGUgIm9zY2xfbWVtLmgiCiNlbmRpZgoKI2lmbmRlZiBPU0NMX0ZJTEVfSU9fSF9JTkNMVURFRAojaW5jbHVkZSAib3NjbF9maWxlX2lvLmgiCiNlbmRpZgoKI2lmbmRlZiBPU0NMX01FTV9fSF9JTkNMVURFRAojaW5jbHVkZSAib3NjbF9tZW0uaCIKI2VuZGlmCgojaWZuZGVmIE9TQ0xfU1RSSU5HX0NPTlRBSU5FUlNfSF9JTkNMVURFRAojaW5jbHVkZSAib3NjbF9zdHJpbmdfY29udGFpbmVycy5oIgojZW5kaWYKCiNpZm5kZWYgT1NDTF9TVFJJTkdfSF9JTkNMVURFRAojaW5jbHVkZSAib3NjbF9zdHJpbmcuaCIKI2VuZGlmCgojaWZuZGVmIE9TQ0xfSU5UNjRfVVRJTFNfSF9JTkNMVURFRAojaW5jbHVkZSAib3NjbF9pbnQ2NF91dGlscy5oIgojZW5kaWYKc3RhdGljIGNvbnN0IGludDMyIE1FRElBX0RBVEFfSU5fTUVNT1JZID0gMDsKc3RhdGljIGNvbnN0IGludDMyIE1FRElBX0RBVEFfT05fRElTSyA9IDE7CgpzdGF0aWMgY29uc3QgdWludDMyIERFRkFVTFRfUFJFU0VOVEFUSU9OX1RJTUVTQ0FMRSA9IDEwMDA7IC8vIEZvciBtaWxsaXNlY29uZHMKc3RhdGljIGNvbnN0IHVpbnQzMiBJTklUSUFMX1RSQUNLX0lEID0gMTsgLy8gSW5pdGlhbCB0cmFjayBJRCBmb3IgZmlyc3QgdHJhY2sgYWRkZWQgdG8gdGhpcyBtb3ZpZQoKc3RhdGljIGNvbnN0IGludDMyIE1FRElBX1RZUEVfVU5LTk9XTiA9IDEwOwoKLy8gTWVkaWFJbmZvcm1hdGlvbkhlYWRlckF0b20gdHlwZXMKc3RhdGljIGNvbnN0IGludDMyIE1FRElBX0lORk9STUFUSU9OX0hFQURFUl9UWVBFX0FVRElPID0gMDsKc3RhdGljIGNvbnN0IGludDMyIE1FRElBX0lORk9STUFUSU9OX0hFQURFUl9UWVBFX1ZJU1VBTCA9IDE7CnN0YXRpYyBjb25zdCBpbnQzMiBNRURJQV9JTkZPUk1BVElPTl9IRUFERVJfVFlQRV9ISU5UID0gMjsKc3RhdGljIGNvbnN0IGludDMyIE1FRElBX0lORk9STUFUSU9OX0hFQURFUl9UWVBFX01QRUc0ID0gMzsKCnN0YXRpYyBjb25zdCB1aW50MzIgVU5LTk9XTl9BVE9NID0gMDsKc3RhdGljIGNvbnN0IGludDMyIFVOS05PV05fREVTQ1JJUFRPUiA9IDE7CnN0YXRpYyBjb25zdCBpbnQzMiBVTktOT1dOX0hBTkRMRVIgPSAyOwoKc3RhdGljIGNvbnN0IGludDMyIENPRElOR19UWVBFX0kgPSAwOwpzdGF0aWMgY29uc3QgaW50MzIgQ09ESU5HX1RZUEVfUCA9IDE7CnN0YXRpYyBjb25zdCBpbnQzMiBDT0RJTkdfVFlQRV9CID0gMjsKc3RhdGljIGNvbnN0IGludDMyIENPRElOR19UWVBFX1NQUklURSA9IDM7CgovLyBNcGVnLTQgZmlsZSB0eXBlcwpzdGF0aWMgY29uc3QgaW50MzIgRklMRV9UWVBFX0FVRElPID0gMTsKc3RhdGljIGNvbnN0IGludDMyIEZJTEVfVFlQRV9WSURFTyA9IDI7CnN0YXRpYyBjb25zdCBpbnQzMiBGSUxFX1RZUEVfQVVESU9fVklERU8gPSAzOyAvLyBMb2dpY2FsIE9SaW5nIG9mIHRoZSB0d28Kc3RhdGljIGNvbnN0IGludDMyIEZJTEVfVFlQRV9TVElMTF9JTUFHRSA9IDQ7CnN0YXRpYyBjb25zdCBpbnQzMiBGSUxFX1RZUEVfU1RJTExfSU1BR0VfQVVESU8gPSA1OyAvLyBMb2dpY2FsIE9SaW5nIG9mIHRoZSB0d28Kc3RhdGljIGNvbnN0IGludDMyIEZJTEVfVFlQRV9URVhUID0gODsKc3RhdGljIGNvbnN0IGludDMyIEZJTEVfVFlQRV9URVhUX0FVRElPID0gOTsKc3RhdGljIGNvbnN0IGludDMyIEZJTEVfVFlQRV9URVhUX1ZJREVPID0gMTA7CnN0YXRpYyBjb25zdCBpbnQzMiBGSUxFX1RZUEVfVEVYVF9BVURJT19WSURFTyA9IDExOyAvLyBMb2dpY2FsIE9SaW5nCgoKLy8gU2NhbGFiaWxpdHkgc2V0dGluZ3Mgb24gdGhlIE1wZWc0IGZpbGUKc3RhdGljIGNvbnN0IGludDMyIFNUUkVBTV9TQ0FMQUJJTElUWV9OT05FID0gMDsKc3RhdGljIGNvbnN0IGludDMyIFNUUkVBTV9TQ0FMQUJJTElUWV9URU1QT1JBTCA9IDE7CnN0YXRpYyBjb25zdCBpbnQzMiBTVFJFQU1fU0NBTEFCSUxJVFlfU1BBVElBTCA9IDI7CnN0YXRpYyBjb25zdCBpbnQzMiBTVFJFQU1fU0NBTEFCSUxJVFlfQk9USCA9IDM7IC8vIExvZ2ljYWwgT1Jpbmcgb2YgdGhlIHR3bwoKI2RlZmluZSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoYSwgYiwgYywgZCkgKCAodWludDMyKGEpIDw8IDI0KSB8ICh1aW50MzIoYikgPDwgMTYpIHwgKHVpbnQzMihjKSA8PCA4KSB8IHVpbnQzMihkKSApCgpjb25zdCB1aW50MzIgUEFDS0VUVklERU9fRk9VUkNDID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdwJywgJ3YnLCAnbScsICdtJyk7CmNvbnN0IHVpbnQzMiBQVlVTRVJfREFUQV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdwJywgJ3YnLCAnbScsICdtJyk7Cgpjb25zdCB1aW50MzIgICAgRklMRV9UWVBFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2YnLCAndCcsICd5JywgJ3AnKTsKCmNvbnN0IHVpbnQzMiAgICBVVUlEX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3UnLCAndScsICdpJywgJ2QnKTsKCmNvbnN0IHVpbnQzMiAgICBNT1ZJRV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdtJywgJ28nLCAnbycsICd2Jyk7CmNvbnN0IHVpbnQzMiAgICBNT1ZJRV9IRUFERVJfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICd2JywgJ2gnLCAnZCcpOwpjb25zdCB1aW50MzIgICAgVFJBQ0tfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigndCcsICdyJywgJ2EnLCAnaycpOwpjb25zdCB1aW50MzIgICAgRVNEX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2UnLCAncycsICdkJywgJ3MnKTsKY29uc3QgdWludDMyICAgIFRSQUNLX0hFQURFUl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCd0JywgJ2snLCAnaCcsICdkJyk7CmNvbnN0IHVpbnQzMiAgICBUUkFDS19SRUZFUkVOQ0VfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigndCcsICdyJywgJ2UnLCAnZicpOwoKLy9tb3ZpZSBmcmFnbWVudHMKY29uc3QgdWludDMyICAgIE1PVklFX0ZSQUdNRU5UX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ20nLCAnbycsICdvJywgJ2YnKTsKY29uc3QgdWludDMyCU1PVklFX0VYVEVORFNfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICd2JywgJ2UnLCAneCcpOwpjb25zdCB1aW50MzIJTU9WSUVfRVhURU5EU19IRUFERVJfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdlJywgJ2gnLCAnZCcpOwpjb25zdCB1aW50MzIJVFJBQ0tfRVhURU5EU19BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCd0JywgJ3InLCAnZScsICd4Jyk7CmNvbnN0IHVpbnQzMglNT1ZJRV9GUkFHTUVOVF9IRUFERVJfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdmJywgJ2gnLCAnZCcpOwpjb25zdCB1aW50MzIJVFJBQ0tfRlJBR01FTlRfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigndCcsICdyJywgJ2EnLCAnZicpOwpjb25zdCB1aW50MzIJVFJBQ0tfRlJBR01FTlRfSEVBREVSX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3QnLCAnZicsICdoJywgJ2QnKTsKY29uc3QgdWludDMyCVRSQUNLX0ZSQUdNRU5UX1JVTl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCd0JywgJ3InLCAndScsICduJyk7CmNvbnN0IHVpbnQzMglNT1ZJRV9GUkFHTUVOVF9SQU5ET01fQUNDRVNTX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ20nLCAnZicsICdyJywgJ2EnKTsKY29uc3QgdWludDMyCU1PVklFX0ZSQUdNRU5UX1JBTkRPTV9BQ0NFU1NfT0ZGU0VUX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ20nLCAnZicsICdyJywgJ28nKTsKY29uc3QgdWludDMyCVRSQUNLX0ZSQUdNRU5UX1JBTkRPTV9BQ0NFU1NfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigndCcsICdmJywgJ3InLCAnYScpOwoKY29uc3QgdWludDMyICAgIEhJTlRfVFJBQ0tfUkVGRVJFTkNFX1RZUEUgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2gnLCAnaScsICduJywgJ3QnKTsKY29uc3QgdWludDMyICAgIERQTkRfVFJBQ0tfUkVGRVJFTkNFX1RZUEUgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2QnLCAncCcsICduJywgJ2QnKTsKY29uc3QgdWludDMyICAgIElQSVJfVFJBQ0tfUkVGRVJFTkNFX1RZUEUgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2knLCAncCcsICdpJywgJ3InKTsKY29uc3QgdWludDMyICAgIE1QT0RfVFJBQ0tfUkVGRVJFTkNFX1RZUEUgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ20nLCAncCcsICdvJywgJ2QnKTsKY29uc3QgdWludDMyICAgIFNZTkNfVFJBQ0tfUkVGRVJFTkNFX1RZUEUgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAneScsICduJywgJ2MnKTsKCmNvbnN0IHVpbnQzMiAgICBNRURJQV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdtJywgJ2QnLCAnaScsICdhJyk7CmNvbnN0IHVpbnQzMiAgICBFRElUX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2UnLCAnZCcsICd0JywgJ3MnKTsKY29uc3QgdWludDMyICAgIEVESVRfTElTVF9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdlJywgJ2wnLCAncycsICd0Jyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9IRUFERVJfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdkJywgJ2gnLCAnZCcpOwpjb25zdCB1aW50MzIgICAgSEFORExFUl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdoJywgJ2QnLCAnbCcsICdyJyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9JTkZPUk1BVElPTl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdtJywgJ2knLCAnbicsICdmJyk7CmNvbnN0IHVpbnQzMiAgICBWSURFT19NRURJQV9IRUFERVJfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigndicsICdtJywgJ2gnLCAnZCcpOwpjb25zdCB1aW50MzIgICAgU09VTkRfTUVESUFfSEVBREVSX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAnbScsICdoJywgJ2QnKTsKY29uc3QgdWludDMyICAgIEhJTlRfTUVESUFfSEVBREVSX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2gnLCAnbScsICdoJywgJ2QnKTsKY29uc3QgdWludDMyICAgIE1QRUc0X01FRElBX0hFQURFUl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCduJywgJ20nLCAnaCcsICdkJyk7CmNvbnN0IHVpbnQzMiAgICBEQVRBX0lORk9STUFUSU9OX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2QnLCAnaScsICduJywgJ2YnKTsKY29uc3QgdWludDMyICAgIERBVEFfUkVGRVJFTkNFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2QnLCAncicsICdlJywgJ2YnKTsKY29uc3QgdWludDMyICAgIERBVEFfRU5UUllfVVJMX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3UnLCAncicsICdsJywgJyAnKTsKY29uc3QgdWludDMyICAgIERBVEFfRU5UUllfVVJOX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3UnLCAncicsICduJywgJyAnKTsKY29uc3QgdWludDMyICAgIFNBTVBMRV9UQUJMRV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJ3QnLCAnYicsICdsJyk7CmNvbnN0IHVpbnQzMiAgICBUSU1FX1RPX1NBTVBMRV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJ3QnLCAndCcsICdzJyk7CmNvbnN0IHVpbnQzMiAgICBDT01QT1NJVElPTl9PRkZTRVRfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignYycsICd0JywgJ3QnLCAncycpOwpjb25zdCB1aW50MzIgICAgU0FNUExFX0RFU0NSSVBUSU9OX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAndCcsICdzJywgJ2QnKTsKY29uc3QgdWludDMyICAgIFNBTVBMRV9TSVpFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAndCcsICdzJywgJ3onKTsKY29uc3QgdWludDMyICAgIFNBTVBMRV9UT19DSFVOS19BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJ3QnLCAncycsICdjJyk7CmNvbnN0IHVpbnQzMiAgICBDSFVOS19PRkZTRVRfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigncycsICd0JywgJ2MnLCAnbycpOwpjb25zdCB1aW50MzIgICAgU1lOQ19TQU1QTEVfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigncycsICd0JywgJ3MnLCAncycpOwpjb25zdCB1aW50MzIgICAgU0hBRE9XX1NZTkNfU0FNUExFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAndCcsICdzJywgJ2gnKTsKY29uc3QgdWludDMyICAgIERFR1JBREFUSU9OX1BSSU9SSVRZX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAndCcsICdkJywgJ3AnKTsKY29uc3QgdWludDMyICAgIE9CSkVDVF9ERVNDUklQVE9SX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2knLCAnbycsICdkJywgJ3MnKTsKY29uc3QgdWludDMyICAgIE1FRElBX0RBVEFfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdkJywgJ2EnLCAndCcpOwpjb25zdCB1aW50MzIgICAgRlJFRV9TUEFDRV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdmJywgJ3InLCAnZScsICdlJyk7CmNvbnN0IHVpbnQzMiAgICBTS0lQX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAnaycsICdpJywgJ3AnKTsKY29uc3QgdWludDMyICAgIFVTRVJfREFUQV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCd1JywgJ2QnLCAndCcsICdhJyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9UWVBFX0FVRElPID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJ28nLCAndScsICduJyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9UWVBFX1ZJU1VBTCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigndicsICdpJywgJ2QnLCAnZScpOwpjb25zdCB1aW50MzIgICAgTUVESUFfVFlQRV9ISU5UID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdoJywgJ2knLCAnbicsICd0Jyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9UWVBFX09CSkVDVF9ERVNDUklQVE9SID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdvJywgJ2QnLCAncycsICdtJyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9UWVBFX0NMT0NLX1JFRkVSRU5DRSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignYycsICdyJywgJ3MnLCAnbScpOwpjb25zdCB1aW50MzIgICAgTUVESUFfVFlQRV9TQ0VORV9ERVNDUklQVElPTiA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigncycsICdkJywgJ3MnLCAnbScpOwpjb25zdCB1aW50MzIgICAgTUVESUFfVFlQRV9NUEVHNyA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICc3JywgJ3MnLCAnbScpOwpjb25zdCB1aW50MzIgICAgTUVESUFfVFlQRV9PQkpFQ1RfQ09OVEVOVF9JTkZPID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdvJywgJ2MnLCAncycsICdtJyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9UWVBFX0lQTVAgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2knLCAncCcsICdzJywgJ20nKTsKY29uc3QgdWludDMyICAgIE1FRElBX1RZUEVfTVBFR19KID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdtJywgJ2onLCAncycsICdtJyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9UWVBFX1NDQUxBQklMSVRZID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdwJywgJ3YnLCAncycsICdjJyk7CmNvbnN0IHVpbnQzMiAgICBNRURJQV9UWVBFX1RFWFQgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3QnLCAnZScsICd4JywgJ3QnKTsKCmNvbnN0IHVpbnQzMiAgICBNUEVHX1NBTVBMRV9FTlRSWSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdwJywgJzQnLCAncycpOwpjb25zdCB1aW50MzIgICAgQVVESU9fU0FNUExFX0VOVFJZID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdtJywgJ3AnLCAnNCcsICdhJyk7CmNvbnN0IHVpbnQzMiAgICBWSURFT19TQU1QTEVfRU5UUlkgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ20nLCAncCcsICc0JywgJ3YnKTsKCmNvbnN0IHVpbnQzMiAgICBBTVJfU0FNUExFX0VOVFJZX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAnYScsICdtJywgJ3InKTsKY29uc3QgdWludDMyICAgIEFNUldCX1NBTVBMRV9FTlRSWV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJ2EnLCAndycsICdiJyk7CmNvbnN0IHVpbnQzMiAgICBIMjYzX1NBTVBMRV9FTlRSWV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJzInLCAnNicsICczJyk7Cgpjb25zdCB1aW50MzIgICAgQU1SX1NQRUNJRklDX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2QnLCAnYScsICdtJywgJ3InKTsKY29uc3QgdWludDMyICAgIEgyNjNfU1BFQ0lGSUNfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignZCcsICcyJywgJzYnLCAnMycpOwpjb25zdCB1aW50MzIgICAgSDI2M19CSVRSQVRFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2InLCAnaScsICd0JywgJ3InKTsKCgpjb25zdCB1aW50MzIgICAgQ09QWVJJR0hUX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2MnLCAncCcsICdyJywgJ3QnKTsKCmNvbnN0IHVpbnQzMiAgICBOVUxMX01FRElBX0hFQURFUl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCduJywgJ20nLCAnaCcsICdkJyk7CmNvbnN0IHVpbnQzMiAgICBGT05UX1RBQkxFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2YnLCAndCcsICdhJywgJ2InKTsKY29uc3QgdWludDMyICAgIFRFWFRfU0FNUExFX0VOVFJZID0gRm91ckNoYXJDb25zdFRvVWludDMyKCd0JywgJ3gnLCAnMycsICdnJyk7CgovLyBQYXJ0IG9mIHVkdGEgYXQgZmlsZSBsZXZlbApjb25zdCB1aW50MzIgICAgUFZfQ09OVEVOVF9UWVBFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3AnLCAndicsICdjJywgJ3QnKTsKCmNvbnN0IHVpbnQzMiAgICBBU1NFVF9JTkZPX1RJVExFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3QnLCAnaScsICd0JywgJ2wnKTsKY29uc3QgdWludDMyICAgIEFTU0VUX0lORk9fREVTQ1BfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignZCcsICdzJywgJ2MnLCAncCcpOwpjb25zdCB1aW50MzIgICAgQVNTRVRfSU5GT19QRVJGX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3AnLCAnZScsICdyJywgJ2YnKTsKY29uc3QgdWludDMyICAgIEFTU0VUX0lORk9fQVVUSE9SX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2EnLCAndScsICd0JywgJ2gnKTsKY29uc3QgdWludDMyICAgIEFTU0VUX0lORk9fR0VOUkVfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignZycsICduJywgJ3InLCAnZScpOwpjb25zdCB1aW50MzIgICAgQVNTRVRfSU5GT19SQVRJTkdfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigncicsICd0JywgJ24nLCAnZycpOwpjb25zdCB1aW50MzIgICAgQVNTRVRfSU5GT19DTFNGX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2MnLCAnbCcsICdzJywgJ2YnKTsKY29uc3QgdWludDMyICAgIEFTU0VUX0lORk9fS0VZV09SRF9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdrJywgJ3knLCAndycsICdkJyk7CmNvbnN0IHVpbnQzMiAgICBBU1NFVF9JTkZPX0xPQ0FUSU9OX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2wnLCAnbycsICdjJywgJ2knKTsKY29uc3QgdWludDMyICAgIEFTU0VUX0lORk9fQUxCVU1fQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignYScsICdsJywgJ2InLCAnbScpOwpjb25zdCB1aW50MzIgICAgQVNTRVRfSU5GT19ZUlJDX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3knLCAncicsICdyJywgJ2MnKTsKCi8vQVZDIHJlbGF0ZWQgYXRvbXMKY29uc3QgdWludDMyICAgIEFWQ19TQU1QTEVfRU5UUlkgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2EnLCAndicsICdjJywgJzEnKTsKY29uc3QgdWludDMyICAgIEFWQ19DT05GSUdVUkFUSU9OX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignYScsICd2JywgJ2MnLCAnQycpOwpjb25zdCB1aW50MzIgICAgQVZDX1NBTVBMRV9ERVBFTkRFTkNZX1RZUEVfQk9YID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJ2QnLCAndCcsICdwJyk7CmNvbnN0IHVpbnQzMiAgICBBVkNfU0FNUExFX1RPX0dST1VQX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigncycsICdiJywgJ2cnLCAncCcpOwpjb25zdCB1aW50MzIgICAgQVZDX1NBTVBMRV9HUk9VUF9ERVNDUklQVElPTl9CT1ggPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAnZycsICdwJywgJ2QnKTsKY29uc3QgdWludDMyICAgIEFWQ19TVUJTRVFVRU5DRV9ERVNDUklQVElPTl9CT1ggPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2EnLCAndicsICdzJywgJ3MnKTsKY29uc3QgdWludDMyICAgIEFWQ19MQVlFUl9ERVNDUklQVElPTl9CT1ggPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2EnLCAndicsICdsJywgJ2wnKTsKY29uc3QgdWludDMyICAgIEFWQ19TQU1QTEVfREVQRU5ERU5DWV9CT1ggPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAnZCcsICdlJywgJ3AnKTsKCmNvbnN0IHVpbnQzMiAgICBNUEVHNF9CSVRSQVRFX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignYicsICd0JywgJ3InLCAndCcpOwpjb25zdCB1aW50MzIgICAgTVBFRzRfRVhURU5TSU9OX0RFU0NSSVBUT1JTX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICc0JywgJ2QnLCAncycpOwoKLy9QaXhlbCBBc3BlY3QgUmF0aW8KY29uc3QgdWludDMyICBQSVhFTEFTUEVDVFJBVElPX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigncCcsICdhJywgJ3MnLCAncCcpOwoKCmNvbnN0IHVpbnQzMiAgICBXTUZfQlJBTkQgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3cnLCAnbScsICdmJywgJyAnKTsKY29uc3QgdWludDMyICAgIEJSQU5EXzNHUFA0ID0gRm91ckNoYXJDb25zdFRvVWludDMyKCczJywgJ2cnLCAncCcsICc0Jyk7CmNvbnN0IHVpbnQzMiAgICBNT0JJTEVfTVA0ID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdtJywgJ20nLCAncCcsICc0Jyk7CmNvbnN0IHVpbnQzMiAgICBCUkFORF8zR1BQNSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignMycsICdnJywgJ3AnLCAnNScpOwpjb25zdCB1aW50MzIgICAgQlJBTkRfM0dQNiA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignMycsICdnJywgJ3AnLCAnNicpOwpjb25zdCB1aW50MzIgICAgQlJBTkRfM0dSNiA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignMycsICdnJywgJ3InLCAnNicpOwpjb25zdCB1aW50MzIgICAgQlJBTkRfTVA0MSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdwJywgJzQnLCAnMScpOwpjb25zdCB1aW50MzIgICAgQlJBTkRfTVA0MiA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdwJywgJzQnLCAnMicpOwpjb25zdCB1aW50MzIgICAgQlJBTkRfSVNPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignaScsICdzJywgJ28nLCAnbScpOwoKCi8qIE9NQTIgRFJNIEF0b21zICovCmNvbnN0IHVpbnQzMiAgICBFTkNSWVBURURfQVVESU9fU0FNUExFX0VOVFJZID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdlJywgJ24nLCAnYycsICdhJyk7CmNvbnN0IHVpbnQzMiAgICBFTkNSWVBURURfVklERU9fU0FNUExFX0VOVFJZID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdlJywgJ24nLCAnYycsICd2Jyk7CmNvbnN0IHVpbnQzMiAgICBFTkNSWVBURURfVEVYVF9TQU1QTEVfRU5UUlkgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2UnLCAnbicsICdjJywgJ3QnKTsKCmNvbnN0IHVpbnQzMiAgICBQUk9URUNUSU9OX1NDSEVNRV9JTkZPX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigncycsICdpJywgJ24nLCAnZicpOwpjb25zdCB1aW50MzIgICAgT1JJR0lOQUxfRk9STUFUX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignZicsICdyJywgJ20nLCAnYScpOwpjb25zdCB1aW50MzIgICAgU0NIRU1FX1RZUEVfQk9YID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJ2MnLCAnaCcsICdtJyk7CmNvbnN0IHVpbnQzMiAgICBTQ0hFTUVfSU5GT1JNQVRJT05fQk9YID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdzJywgJ2MnLCAnaCcsICdpJyk7CmNvbnN0IHVpbnQzMiAgICBNVVRBQkxFX0RSTV9JTkZPUk1BVElPTiA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdkJywgJ3InLCAnaScpOwpjb25zdCB1aW50MzIgICAgT01BRFJNX1RSQU5TQUNUSU9OX1RSQUNLSU5HX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbycsICdkJywgJ3QnLCAndCcpOwpjb25zdCB1aW50MzIgICAgT01BRFJNX1JJR0hUU19PQkpFQ1RfQk9YID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdvJywgJ2QnLCAncicsICdiJyk7CmNvbnN0IHVpbnQzMiAgICBPTUFEUk1fS01TX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbycsICdkJywgJ2snLCAnbScpOwovLyBUZXh0IFNhbXBsZSBNb2RpZmllciBBdG9tcwpjb25zdCB1aW50MzIgICAgVEVYVF9TVFlMRV9CT1ggPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3MnLCAndCcsICd5JywgJ2wnKTsKY29uc3QgdWludDMyICAgIFRFWFRfSElHSExJR0hUX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignaCcsICdsJywgJ2knLCAndCcpOwpjb25zdCB1aW50MzIgICAgVEVYVF9ISUxJR0hUX0NPTE9SX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignaCcsICdjJywgJ2wnLCAncicpOwpjb25zdCB1aW50MzIgICAgVEVYVF9LQVJBT0tFX0JPWCA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignaycsICdyJywgJ28nLCAnaycpOwpjb25zdCB1aW50MzIgICAgVEVYVF9TQ1JPTExfREVMQVlfQk9YID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdkJywgJ2wnLCAnYScsICd5Jyk7CmNvbnN0IHVpbnQzMiAgICBURVhUX0hZUEVSX1RFWFRfQk9YID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdoJywgJ3InLCAnZScsICdmJyk7CmNvbnN0IHVpbnQzMiAgICBURVhUX09WRVJfUklERV9CT1ggPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3QnLCAnYicsICdvJywgJ3gnKTsKY29uc3QgdWludDMyICAgIFRFWFRfQkxJTktfQk9YID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdiJywgJ2wnLCAnbicsICdrJyk7CgoKCgpjb25zdCB1aW50MzIJSVRVTkVTX0FMQlVNX0FUT00gID0gRm91ckNoYXJDb25zdFRvVWludDMyKCepJywgJ2EnLCAnbCcsICdiJyk7CmNvbnN0IHVpbnQzMglJVFVORVNfQVJUSVNUMV9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCepJywgJ2EnLCAncicsICd0Jyk7CmNvbnN0IHVpbnQzMglJVFVORVNfQVJUSVNUMl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCepJywgJ0EnLCAnUicsICdUJyk7CmNvbnN0IHVpbnQzMglJVFVORVNfQUxCVU1fQVJUSVNUX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2EnLCAnQScsICdSJywgJ1QnKTsKY29uc3QgdWludDMyCUlUVU5FU19DT01NRU5UX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ6knLCAnYycsICdtJywgJ3QnKTsKY29uc3QgdWludDMyCUlUVU5FU19ZRUFSX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ6knLCAnZCcsICdhJywgJ3knKTsKY29uc3QgdWludDMyCUlUVU5FU19TT05HX1RJVExFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ6knLCAnbicsICdhJywgJ20nKTsKY29uc3QgdWludDMyCUlUVU5FU19HRU5SRTFfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignqScsICdnJywgJ2UnLCAnbicpOwpjb25zdCB1aW50MzIJSVRVTkVTX0dFTlJFMl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdnJywgJ24nLCAncicsICdlJyk7CmNvbnN0IHVpbnQzMglJVFVORVNfVFJBQ0tfTlVNQkVSX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ3QnLCAncicsICdrJywgJ24nKTsKY29uc3QgdWludDMyCUlUVU5FU19ESVNLX05VTUJFUl9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdkJywgJ2knLCAncycsICdrJyk7CmNvbnN0IHVpbnQzMglJVFVORVNfQ09NUE9TRVJfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignqScsICd3JywgJ3InLCAndCcpOwpjb25zdCB1aW50MzIJSVRVTkVTX0VOQ09ERVJfVE9PTF9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCepJywgJ3QnLCAnbycsICdvJyk7CmNvbnN0IHVpbnQzMiAgICBJVFVORVNfRU5DT0RFREJZX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ0AnLCAnZScsICduJywgJ2MnKTsKY29uc3QgdWludDMyCUlUVU5FU19CUE1fQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMigndCcsICdtJywgJ3AnLCAnbycpOwpjb25zdCB1aW50MzIJSVRVTkVTX0NPTVBJTEFUSU9OX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2MnLCAncCcsICdpJywgJ2wnKTsKY29uc3QgdWludDMyCUlUVU5FU19BUlRfV09SS19BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdjJywgJ28nLCAndicsICdyJyk7CmNvbnN0IHVpbnQzMglJVFVORVNfR1JPVVBJTkcxX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ6knLCAnZycsICdyJywgJ3AnKTsKY29uc3QgdWludDMyCUlUVU5FU19HUk9VUElORzJfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignZycsICdyJywgJ3UnLCAncCcpOwpjb25zdCB1aW50MzIJSVRVTkVTX0xZUklDU19BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCepJywgJ2wnLCAneScsICdyJyk7CmNvbnN0IHVpbnQzMglJVFVORVNfREVTQ1JJUFRJT05fQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignZCcsICdlJywgJ3MnLCAnYycpOwpjb25zdCB1aW50MzIJSVRVTkVTX0NPUFlSSUdIVF9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdjJywgJ3AnLCAncicsICd0Jyk7CmNvbnN0IHVpbnQzMglNRVRBX0RBVEFfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbScsICdlJywgJ3QnLCAnYScpOwpjb25zdCB1aW50MzIJSVRVTkVTX0ZSRUVfRk9STV9EQVRBX05BTUVfQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignbicsICdhJywgJ20nLCAnZScpOwpjb25zdCB1aW50MzIJSVRVTkVTX01ESVJBUFBMX0hETFJfUEFSVDEgPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ20nLCAnZCcsICdpJywgJ3InKTsKY29uc3QgdWludDMyCUlUVU5FU19NRElSQVBQTF9IRExSX1BBUlQyID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdhJywgJ3AnLCAncCcsICdsJyk7CmNvbnN0IHVpbnQzMiAgICBJVFVORVNfSUxTVF9BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdpJywgJ2wnLCAncycsICd0Jyk7CmNvbnN0IHVpbnQzMglJVFVORVNfSUxTVF9EQVRBX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ2QnLCAnYScsICd0JywgJ2EnKTsKY29uc3QgdWludDMyCUlUVU5FU19NRUFOX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ20nLCAnZScsICdhJywgJ24nKTsKY29uc3QgdWludDMyCUlUVU5FU19GUkVFX0ZPUk1fQVRPTSA9IEZvdXJDaGFyQ29uc3RUb1VpbnQzMignLScsICctJywgJy0nLCAnLScpOwpjb25zdCB1aW50MzIgICAgSVRVTkVTX1RSQUNLX1NVQlRJVExFX0FUT00gPSBGb3VyQ2hhckNvbnN0VG9VaW50MzIoJ0AnLCAncycsICd0JywgJzMnKTsKY29uc3QgdWludDMyICAgIElUVU5FU19DT05URU5UX1JBVElOR19BVE9NID0gRm91ckNoYXJDb25zdFRvVWludDMyKCdyJywgJ3QnLCAnbicsICdnJyk7ICAvLyBTYW1lIHRhZyBhcyBBU1NFVF9JTkZPX1JBVElOR19BVE9NCgoKCi8vRm9yIGlUdW5lcwojZGVmaW5lIElUVU5FU19GUkVFX0ZPUk1fREFUQV9BVE9NX1RZUEVfTk9STSAiaVR1bk5PUk0iCiNkZWZpbmUgSVRVTkVTX0ZSRUVfRk9STV9EQVRBX0FUT01fVFlQRV9UT09MICJ0b29sIgojZGVmaW5lIElUVU5FU19GUkVFX0ZPUk1fREFUQV9BVE9NX1RZUEVfQ0REQjEgImlUdW5lc19DRERCXzEiCiNkZWZpbmUgSVRVTkVTX0ZSRUVfRk9STV9EQVRBX0FUT01fVFlQRV9DRERCX1RSQUNLTlVNQkVSICJpVHVuZXNfQ0REQl9UcmFja051bWJlciIKI2RlZmluZSBJVFVORVNfRlJFRV9GT1JNX0RBVEFfQVRPTV9UWVBFX0NEREJfSURTICJpVHVuZXNfQ0REQl9JRHMiCgoKLy8gVkFSSU9VUyBERVNDUklQVE9SIFRBR1MgQ1VSUkVOVExZIElOIFVTRQoKI2RlZmluZSBFU19ERVNDUklQVE9SX1RBRyAgICAgICAgICAgICAweDAzCiNkZWZpbmUgRVNfSURfSU5DX1RBRyAgICAgICAgICAgICAgICAgMHgwRQojZGVmaW5lIEVTX0lEX1JFRl9UQUcgICAgICAgICAgICAgICAgIDB4MEYKI2RlZmluZSBERUNPREVSX0NPTkZJR19ERVNDUklQVE9SX1RBRyAweDA0CiNkZWZpbmUgREVDT0RFUl9TUEVDSUZJQ19JTkZPX1RBRyAgICAgMHgwNQojZGVmaW5lIFNMX0NPTkZJR19ERVNDUklQVE9SICAgICAgICAgIDB4MDYKCiNkZWZpbmUgU1RSRUFNX1RZUEVfQVVESU8gICAgICAweDA1CiNkZWZpbmUgU1RSRUFNX1RZUEVfVklTVUFMICAgICAweDA0CgojZGVmaW5lIERFRkFVTFRfQVVUSE9SSU5HX01PREUgMHgwMDAwMDAwMAoKdHlwZWRlZiBlbnVtCnsKICAgIEVOb0ZpbGVUeXBlCSAgPSAweDAwMDAsCiAgICBFM0dQNAkJICA9IDB4MDAwMSwKICAgIEUzR1A1CQkgID0gMHgwMDAyLAogICAgRUlTT00JCSAgPSAweDAwMTAsCiAgICBFTVA0MQkJICA9IDB4MDAyMCwKICAgIEVNUDQyCQkgID0gMHgwMDQwLAogICAgRU1NUDQJCSAgPSAweDAxMDAsCiAgICBFV01GCQkgID0gMHgwMjAwLAogICAgRVVOS05PV05fVFlQRSA9IDB4ODAwMAp9IEZJTEVfVFlQRV9NQVNLUzsKCnR5cGVkZWYgZW51bQp7CiAgICBDT0RFQ19UWVBFX0FNUl9BVURJTyA9IDEsCiAgICBDT0RFQ19UWVBFX0FBQ19BVURJTwoKfSBBVURJT19DT0RFQ19UWVBFUzsKCnR5cGVkZWYgZW51bQp7CiAgICBDT0RFQ19UWVBFX01QRUc0X1ZJREVPID0gMSwKICAgIENPREVDX1RZUEVfQkFTRUxJTkVfSDI2M19WSURFTywKICAgIENPREVDX1RZUEVfTVBFRzRfSU1BR0UKCn0gVklERU9fQ09ERUNfVFlQRVM7Cgp0eXBlZGVmIGVudW0KewogICAgQU1SX0FVRElPICAgPSAweGQwLAogICAgUUNFTFBfTVA0CT0gMHhFMSwKICAgIE1QRUc0X0FVRElPID0gMHg0MCwKICAgIE1QRUcyX0FVRElPX0xDID0gMHg2NywKICAgIE1QRUc0X1ZJREVPID0gMHgyMCwKICAgIEgyNjNfVklERU8gID0gMHhjMCwKICAgIEFNUldCX0FVRElPXzNHUFAgPSAweEZBLAogICAgQVZDX1ZJREVPICAgPSAweEZCLAogICAgQU1SX0FVRElPXzNHUFAgPSAweEZDLAogICAgVElNRURfVEVYVCAgPSAweEZELAogICAgTVBFRzRfU1lTX09EID0gMHgwMSwKICAgIE1QRUc0X1NZU19CSUZTID0gMHgwMSwKICAgIFRZUEVfVU5LTk9XTiA9IDAKCn0gT1RJX1ZBTFVFUzsKCnR5cGVkZWYgZW51bQp7CiAgICBTVFJJTkdfR0VOUkUgPSAwLAogICAgSU5URUdFUl9HRU5SRQp9R25yZVZlcnNpb247Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBPU0NMX3dIZWFwU3RyaW5nPE9zY2xNZW1BbGxvY2F0b3I+IHRpdGxlOwogICAgT1NDTF93SGVhcFN0cmluZzxPc2NsTWVtQWxsb2NhdG9yPiBhdXRob3I7CiAgICBPU0NMX3dIZWFwU3RyaW5nPE9zY2xNZW1BbGxvY2F0b3I+IGRlc2NyaXB0aW9uOwogICAgT1NDTF93SGVhcFN0cmluZzxPc2NsTWVtQWxsb2NhdG9yPiByYXRpbmc7CiAgICBPU0NMX3dIZWFwU3RyaW5nPE9zY2xNZW1BbGxvY2F0b3I+IGNvcHlSaWdodDsKICAgIE9TQ0xfd0hlYXBTdHJpbmc8T3NjbE1lbUFsbG9jYXRvcj4gdmVyc2lvbjsKICAgIE9TQ0xfd0hlYXBTdHJpbmc8T3NjbE1lbUFsbG9jYXRvcj4gY3JlYXRpb25EYXRlOwp9IENsaXBJbmZvOwoKdHlwZWRlZiBlbnVtCnsKCiAgICBPUklHSU5BTF9DSEFSX1RZUEVfVU5LTk9XTiwKICAgIE9SSUdJTkFMX0NIQVJfVFlQRV9VVEY4LAogICAgT1JJR0lOQUxfQ0hBUl9UWVBFX1VURjE2Cgp9IE1QNEZGUGFyc2VyT3JpZ2luYWxDaGFyRW5jOwoKCiNkZWZpbmUgSlBFRwkweDAwMDAKI2RlZmluZSBHSUYJCTB4MDAwMQojZGVmaW5lIE1QNF9NSU5fQllURVNfRk9SX0dFVFRJTkdfTU9WSUVfSERSX1NJWkUgMTAyNAoKI2RlZmluZSBESVNBQkxFX1JFUE9TX09OX0NMSVBTX0hBVklOR19VTkVRVUFMX1RGUkFfRU5UUllfQ09VTlQgMAoKI2RlZmluZSBDT1VOVF9PRl9UUlVOU19QQVJTRURfVEhSRVNIT0xEIDMwMDAKCi8vIHdoZW4gcGxheWluZyBmcm9tIGEgZmlsZQojZGVmaW5lIE1BWF9DQUNIRURfVEFCTEVfRU5UUklFU19GSUxFCQk0MDk2CiNkZWZpbmUgVEFCTEVfRU5UUklFU19USFJFU0hPTERfRklMRSAgICAgICAgICAgIDEwMjQKCi8vIHdoZW4gcGxheWluZyBmcm9tIGEgbWVtb3J5IGJ1ZmZlciBkYXRhIHN0cmVhbQojZGVmaW5lIE1BWF9DQUNIRURfVEFCTEVfRU5UUklFU19NQkRTCQkxNjM4NAojZGVmaW5lIFRBQkxFX0VOVFJJRVNfVEhSRVNIT0xEX01CRFMJCTQwOTYKCiNkZWZpbmUgQllURV9PUkRFUl9NQVNLIDB4RkVGRgojZGVmaW5lIEJZVEVfT1JERVJfTUFTS19TSVpFIDIKI2RlZmluZSBNQVhfVVRGOF9SRVBSRVNFTlRBVElPTiA0CgovLyBNYXggbGltaXQgZm9yIG51bWJlciBvZiB0cmFja3MgaW4gYSBmaWxlCgojZGVmaW5lIE1BWF9MSU1JVF9GT1JfTlVNQkVSX09GX1RSQUNLUyAxMDI0CgojZW5kaWYgLy9BVE9NREVGU19IX0lOQ0xVREVECg==