AP9g/3D/OP8c/w7/B/8D/wAAYABwADgAHAAOAAcAAwAA/wb/Dv8c/zj/cP/g/8D/AAAGAA4AHAA4AHAA4ADAAAEAAQABAAEAAQDxAAEAAQAAAAAAAAAAAAAAAAAAAAAAhgDGAMYApgCWAJYAjgCOAAAAAAAAAAAAAAAAAAAAAABgAGAAAABvAGwAbABsAGwAAAAAAAAAAAAAAAAAAAAAAAAAGAA8AJkA2wDbANsA2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5wA2APYABgA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHAGwAbABsAGwAAAAAAAAAAAAAAAAAAAAAAMAAwADAAM8A2QDZANkA2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAI8AgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODgsODwAAAAAAAAAAAAAAAAQAAAAMDgAMDAoEDgAGAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAIAAwADAAIAAAAAAAAAAAAAAgACAAAAAAAAAAAAAAAAOEQYZBgkADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIDBAcIDxAAAAAAAAAAAAAAAAAAAAAAAB4Yf3zf/l/+X/xCvD54BAAAAAAAAAAAAAAgAEAAgAAD/wf/Dv8c/zj/cP9g/wD/AwAHAA4AHAA4AHAAYAAAAMD/4P9w/zj/HP8O/wb/AP/AAOAAcAA4ABwADgAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAAAABwAEAAcABAAEAAQAAAAAAAAAAAAAAAAAAAAAAGwAAACAAKEAugAjACIAIQAAAAAAAAAAAAAAAAAAAAAA2QAAAAAAjgBQAMwAAgDeAAAAAAAAAAAAAAAAAAAAAADmAAAAAABnAJQA9ACEAHQAAAAAAAAAAAAAAAAAAAAAAGcAAAAQADwAkQCQAJAAkQAAAAAAAAAAAAAAAAAAAAAAzwAAAAAA4AAAAMAAIADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgECAQACAAAAAAACAgMAAAAAAAAAAAAAAAAAAAAAAgMDA4MDgwKAAwAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAGAAkACQAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGCQYJBgkGCQAGBgkABgAABgAGAAYABgAAAAYAAAADhAdIBsgFyAOIQBeAKAAwAEAAgAEAAgAEAAgAEAAAADwCOAQwCCAQACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODgEPAI8AgwyMDwwOAAAAAAAAAAAAAAAADAAMAAwODAwIDAAIAAAAAAAAAAAMAAwACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIDAAAAAAAAAAAAAAAAAAAAAAMDg4LDg8ADgAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAcHGR4gP0A/QF/Af8B/gAAAAAABAAMABgA8AAwABAAA4OD4GATsAvQC+gP6A/oBAAAAAOAA8AAYAAwADAAMAAABASMjdzd/f/9z/23/f/8AAAEAIwA3AH8AcwBtAH8AAICAxMDu7P78/5z/bP/4/wAAgADEAOwA/gCeAG4A/gAA/z+gb+AA/wYJDBIYZED4AABaAB4AAAAAAAAAAABgAAB7c4ybZBvkc4zDPPkGAP0AAHMAmwAbAHMAwwD5AAAAAD84QHCPb5BfoByjYJ87hAAABwAQACAAAABAACAAeAAA/AQGEuPqE/ILcotyi+oTAAD4ABwADAAEAAQABAAMAAAcHD4ScwpbDh8ATgAAAAAcAD4AfwBXAB8ATgAAAAAAAAAALAAGBh8aOxIzHD4AHAAALAAGAB8ANwA/AD4AHAAAPz9Hf59/v3+/f/93v3v/AAAIACAAQABAAAAAQAAAAAD8+P78//z//P/8/+z/3P8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAIOAQ4BDgEAAAAAAAAAAAAAAAAAAAAADAIADgwOCAwACAAAAAAAAAAAAAAMAAgAAAAAAAAAAAAAAAAAAAAADAwODgsODwAPAAAAAAAAAAAAAAQAAAAAAAAAAAgIDAwGDA4ADgAAAAAAAAAAAAAIAAAAAAAAAAAAB5gH/PcP8Nch0iHyAPEAAPBgAAAAAAAAAAAAAAAAAAAOYB/vkO/bBOuET4BPAIAPAYAAAAAAAAAAAAAAAAAAAAP38PPwAfAAcBOjFGeYIAgz8AHwAHAAAAAQA5AH0AfAD4/sD8APgA4AB4MER4ggCC/AD4AOAAAACAALgAfAB8AAD7+wTDPPMMG+Qb5PEOAPsAAPsAwwDzABsAGwDxAAAAAPvzDBvkc4wb5Bvk8Q4A+wAA8wAbAHMAGwAbAPEAAAA7hDyDO4Q7hByDQMA/fwA/eAB8AHgAeAB8AD8AAAAAAJpjeoO6Q7pDcoMGB/z+APwcAHwAPAA8AHwA+AAAAAAAABgYJCRCQoFCwyTnGH4APAAAGAA8AH4APAAYAAAAAAAAfjDDeoN6gzKDRsc8/wB+AAA8AFwAfAB8ADgAAAAAAH3/f/9//3//f/8//wB/AD8AAAAAAAAAAAAAAAAAAAAAvP/8//z//P/8//j/AP4A/AAAAAAAAAAAAAAAAAAAAAAAPzhAf4B/gH+AO4R7hDuEAAAHAB8APwA/AHsAOwB7AAD8BAbwAfgB+AHYIdgh2CEAAPgA/gD+AP4A3gDeAN4AAAMDDwwcED8naCdoV8hXyAAAAAADAAAAEAAQADAAMAAAwMDwMDgI7OQWdI5yi+oTAAAAAMAAEAAIAAAABAAMAAAALhFqFSpVKhUqFS4RAC4AAAAAAAAAAAAAAAAAAAAAAADgEKBQoFCgUKBQ4BAA8AAAAAAAAAAAAAAAAAAAAAAAAK5RqlWqVeoVKtUuEQAuAAAAAAAAAAAAAAAAAAAAAAAA7hGqVeoVqlWqVe4RAO8AAAAAAAAAAAAAAAAAAAAAAAEBAgECAwQDBAf4fYI9QgAAAQABAAMAAwAHAH0APQAAAACAAICAQIBAwD58gniEAAAAAAAAgACAAMAAfAB4AAA/AB8EBAMDAQEBAQEBAAAAAAAAAwAAAAEAAQABAAAAAAAAAAAAAAAAAAAAAAADAwAAAAAAAAAAAAAAAAAAAAAAAAAAAP8/oG/gAP8YZiD4AAAAAAAAWgAeAAAAAABgAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAMAB4BVwmPkc+RwAAAAAAAAAABAAGAAcABwAAGBAoMEhgkPAIYJgYfHD8AAAQADAAYADwAGAAHAD8ADuEP4A/gD+AH4BAwABAAD97AH8AfwB/AH8APwA/AAAA2CH4AfgB+AHwAQABAAIA/N4A/gD+AP4A/gD+APwAAABXyFfIUM9fwAD/H/0f/QD/MAAwADAAPwAAAH0AfQAAABrjeoN6g/oDAP/4P/g/AP8cAHwAfAD8AAAAPgA+AAAAAADuEapVKtXqFYp17hEA7gAAAAAAAAAAAAAAAAAAAAAAAO4RqlWqVapVqlXuEQDvAAAAAAAAAAAAAAAAAAAAAAAzM0xzjDPMM0wzTDFOAHsAADMAcwAzADMAMwAxAAAAAF5co1qlWqVco9gmmGQA3AAAXABaAFoAXADYAJgAAAAdIg8QHyAfID5BOEZgmADgHQAPAB8AHwA+ADgAYAAAAHCI4BDwCPAI+AQ4xAwyAA5wAOAA8ADwAPgAOAAMAAAA/Dz4GPgY8BDgIMDAAAAAABwACAAIAAAAAAAAAAAAAAB4eDg4MLCg4MDgwOAAwAAAAAAAAAAAAAAAAAAAAAAAAIEAQgA8ADwAPAA8AEIAgQCBAAAAGAAkACQAGAAAAIEAeHj8hP6i/6H/kX9Rf0k3NwAAAAAAABAAIAAIAAQAAAB+h3/PP/9y/23/K38XPwAfhwDPAL8A/wD/AH8APwAfAAzyfIJ8gjzCuMawzGCYAODyAIIAggDCAMYAzACYAOAAHgA/AH8A/wD/AP8A/wD/AAAAAAAAAAAAAAAAAAAAAAAAAHgA/AD+AP4A/gD8AP4AAAAAAAAAAAAAAAAAAAAAAAAAAAAYADwAPAA8ABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAA4ABQADgAOADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYADwAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAGAAYAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAA8ADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAA2AAAAAAAAAAAAAAAAAAAAAAAAABCACQAGAAYACQAQgAAAAAAQgAYACQAJAAYAEIAAAAAAAAAJAAYABgAJAAAAAAAAAAAACQAAAAAACQAAAAAAAAAAAAQADgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9fwF/AAP8A/1/AX8AA/wAAPQA9AAAAAAA9AD0AAAB/AD8APwB/AH8AfwA/AAMAAAAAAAAAAAAAAAAAAAAAAP4A/wD/AP8A/gD+APgAwAAAAAAAAAAAAAAAAAAAAAAAAQAIABwAHQALAAEAAAAAAAAAAAAAAAAAAAAAAAAAAADgANAAOAA4AJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAGAAYAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwACAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAeAA8ABgADAAcADwAHAAAAAAAAAAAAAAAAAAAAAADAAPAA8ADgAGAAcADwAGAAAAAAAAAAAAAAAAAAAAAAAB4AHgAPAA4ABwANAA8ABQAAAAAAAAAAAAAAAAAAAAAA+ADQAPAA4AB4ADgAsABgAAAAAAAAAAAAAAAAAAAAAAABAAMAAwAHAP8A/wB/AD8AAAAAAAAAAAAAAAAAAAAAAAMAjwD+AP4A/AD8APgA+AAAAAAAAAAAAAAAAAAAAAAADAwfAz8hPwEfEwwMAAAAAAAAEQAAACAAAQAAAAAAAAD////b/73/AP+9/9v/////AAAAAAAAAAAAAAAAAAAAAAADAQ8BMxhHIIwAngCeAJ4AAwAPDD8gf1//f/9//3//AIAA4ACYAOQAcgByACIAAgCAAOBg+Dj8/P78/vz+/P4AAAAAAAAAAAAADAAeAA4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AHwAaBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAeARcJj5HPkcAAAAAAAAAAAQABgAHAAcAAAAADw5xfIJ4hCBcHH46fQAAAAAMAHwAeAAgAB4AfQAABgIVEi0OEWEefgL/AdcpAAAAAAAAAAARAAMAAQABAAAMBAoE6uYZ8g38A3gCdAYAAAAAAAAAAAAAhADMAPwABgcPDBcQFzAuMUFOQFHf4AAAAAAJAA8ADgAxAC4AAADg4DCwiHhEjOAE4ALCBgOLAABAAIAAcAD4APwA+AB0AAUHCwwHGDM0LSJuYWViM3QAAAAAAQALAB0AHgAdAAgAoOAQMMAYzCy0RHaGpkbMLgAAwADgANAAuAB4ALgAEAAHBwsMFhEjJAcoT1BHaKPkAAAAAAgAGwAXAC8AFwAbAODgEDAIyMQk4BTyCuIWxScAAMAAMADYAOgA9ADoANgAAJ4ATDxgGzwAHwAHAAAAAH//P38/fx8/Bx8ABwAAAAAAAgAEWAzwSEDwAMAAAAAA/P74/Pj88PjA8ADAAAAAAA4RDzE/YT9zf/9//2f/Xv8BACEAYQBzAP8A/wD/AP8AAAAAgIDAgMCAwIDAAIAAAAAAgADAAMAAwADAAIAAAAAaBRoFHwAfAA8SHz8fPx4/AAAAAAAAAAASAD8APwA/AMAAwCDgMOAw4HDg8CDwwOAAACAAMAAwAHAA8ADwAOAAfod/zz//fv9x/yt/Fz8AH4cAzwC/AP8A/wB/AD8AHwBGuX6BPsHc4tzi2OQg2ADguQCBAMEA4gDiAOQA2ADgANYpfgEMMwAfAA8DBAMEAAcBAAEAEwAPAAAAAAAAAAAAiI5w/gD8cIg4xNgkgFgAgPwA/ADIAAAAAAAAAAAAAAA/wP+AwD+Af0A/IF8fIAAfAAAAAAAAAAAAAAAAAAAAAId39h7/AD/AAP9+gOAcAOAIAAAAAAAAAAAAAAAAAAAAR3i/4HiH8A+AfzBPDzAADwAAAAAAAAAAAAAAAAAAAADjH/0HHuEP8AH+DPLwDADwAAAAAAAAAAAAAAAAAAAAAHDz+Bz3Dz/AD3AQLw8QAA8MAAMAAAAAAAAAAAAAAAAADs8fOO/w/APwDgj08AgA8DAAwAAAAAAAAAAAAAAAAAA8/gx/Ch0CDQAfGycBEwEP/gB8ABgACAADAAcADwAHAGDw7Jy2ShjGAaVB3UGzKNkAAAAANAA4AFoAogCMAIYAPP4MfwodAm1h/17jA3AHCf4AfAAYAGkA4wDBAGwAAABg8OycBvr4/pn9Gf1Bu6hZAAAAAPwA/AD+AL4AHAAGAAE/Dx8DDwMHAA8Ab2/wYPA/AB8ADwAHAAMAYADgAO8AwOCw8BDuLt8e/zD/ifXFG+AAwACeAJ8APwB/ADIAIAAAAAADAQ4DPQp3GGdYp3iHAAAAAAAAAAAAAAAAAAAAAAAAAPPzDPf7BP8A/wD/YJ8AAAAAAAAAAAAAAAAAAAAAAAAAAwAPAP8APxFuO0QxzgAAAAADAA4ABAAgAAAARAAAAADAAPAQ+DjsEP6AfoB/AAAAAMAAEABoAPwAfAB+AAADAA8AfwB/RDtuEUa5bJMAAAMACAATAAMAAQARABMAAMAA8BD4OOwQ/gD+AP8A/wAAwADwAOgA/AD8AP4A/gAABgYJDhEOEQ4RDjEmaSZJAAAAAAAAAAAAAAAAEAAwAABgYJBwiHCIcIhwjGyeZJIAAAAAAAAAAAAAAAAAAAwAAAAIcHCIdIh4hDpEHSIucQAAAAAAAAAAAAAAAAAAAAAAABAODhEuER4hXCK4RHSKAAAAAAAAAAAAAAAAAAAEAAcPBw8ABwABAAEBBgcIAA8PAA8ABwAAAAAAAQADAAAAB/9Q7s7xAP7gEOAQ4BAA8OAA4ADgAAAA4ADgAOAAAAABOBMsGCceIQ4RDBIADAAABgAAABgAHgAOAAwAAAAAAIt/NHqucR7hDDI4RAB4AABwAPQAbgAeAAwAGAAAAAAAd/gAfAscAB4MEw4RHiEAP/AAewAYAAEADAAOAA4AAAClG1k/gn06RXiHAPwAfAAAWAC8AAAAuAA4AAAAAAAAADDPA/wHeAB4Az8ADwADAAAAAAAAAAAHAAAAAAAAAAAAYI9Aj5AfYH+A/wD/APMAABAAMABgAIAAAAAAAAAAAAAb5B//MG8vf19/Z58AZwAeZAB/ACAALwAfACcAGAAAAAD/gP/gfj7++fH4wXDGAHj+AP4AfAAwAM4AngA4AAAAfv8DfTx/Hz8HHwcEDAgAD38AAQA8AB8ABAADAAMAAAAA/4D+wP7g/OD4ICAgIADg/gD8APwA+AAgAMAAwAAAAHaJY8Rg4zdAP0AfJAcfAAdQADgAHAA8AAwACwAAAAAAbJHGIwbHvA78BviE4NgA4AoAHAA4APAAyABIACAAAAAnSHOEYMNn4DdAP0QPNwAPMABYADwAHAA8AAsACAAAAOwSxiMGx54HvAL8wvDsAPAIABwAOAD4AOQAJAAQAAAAAP8/gEDjQ89F307fQf9A/wAAfwAcADMAJQAuABUAGwAA//4BAsWC8VK54tlS/br9AADwADgAjgAWAMYAUgC6AAADAwwPEB8gHSI9Qj1CP0AAAAAAAwAHAAwAHAAZABMAAMDAMOAI8ASwRLxGvEb0BgAAAACQACgAKACMAIwACAADHBwgAiMMHgAMAAAAAAAAAwAfABwAAAAAAAAAAAAAAAB/cYIIzAN/AAMAAAAAAAAAAH0AMwAAAAAAAAAAAAAADg4PCQ8JDwkfER8RPyB/QAAAAAAAAAAAAAAAAAAABAAAAAAAAABgYOCg8DDwUPCQAAAAAAAAAAAAAAAAAAAAADAIeAQ4RjpHPkd+h37PP/8IAAQABgAHAAcAhwDPAL8AAAAAAAAAAAAAAAAAAPDwDAAAAAAAAAAAAAAAAPAADAAAADAIeAQ4RjpHPkd+h37PAAAIAAQABgAHAAcAhwDPAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAPAABgEPAAcIBwgHCA8QDxkHHwEAAAAAAAAAAAAQABkAFwAAAACAAMBA4MDgwODA8PDsAACAAMAA4ADgAOAA8ADsAAABAQYHCA9wb5ATaGycA38AAAAAAAAAAAwABwAPAA8AAICAYOAQ8AjwCPgEOATEwgAAAAAAAAAAAADAAPgA/ABA/0D/YP9g/3DfXO9//wD/FQAOAAUACwAhABAAAAAAAFL9Kv0S+QL5AvEy9fz9AP9SAOoAVgC2AE4ACgACAAAAO0QzTB1CDiEHIAAQAw8AAwIAAAA4ABAAHQAPAAAAAADUJsQ2tEZojMgMMDjA8ADAGAAIADgAcADwAMAAAAAAAAA/P0B/gH+AAP9/gABAAD8AAAAAAAAAAH8AfwA/AAAAAP//AP8A/wAA//8AAAAA/wAAAAAAAAAA/wD/AP8AAAB/QO+A/4DvgP+A74B/Qzw8CAAUABoAFAAYABQAAAAAAPgo8BDgIPAQ4ODAQICAAAAAAAAAAAAAAAAAAAAAAAAAf/92/yx/CDwAGAABAAEAAf8A/wB/ADwAGAAAAAAAAAD8ovyyfvF+8QD+eIT4BAD8ogCyAPEA8QCCAHgAeAAAAD//f/92/yx/CD0BHgMEAAe/AP8A/wB/ADwAGQABAAAA8Az8svyafrk8++Ad4BIA/AwAsgCaALgAOgDuAOwAAAAPHw5/ZZ9plj1CPEMYJAAYHwAfACcAagA8AD0AGAAAAPza/I7+Hf4d4B8e4T5BAH/aAI4AHQAdAAAAngAeAAAAbBPWKdYp/gH+AW0CAAMAABMAAQABAAEAAAAAAAAAAAA4+gT+AP9CvWaZZJpEqgDM/AD8AHwAGAAAAAAAAAAAADAAeAZeJz9HP0d/h3/PP/8AAAYABwAHAAcAhwDPAL8AAAAAeHiEDPJ0+nb5uv2a/QAAeACEAPIA+gD5AP0A/QAAADAAeAZeJz9HP0d/h3/PAAAAAAYABwAHAAcAhwDPAAAAAAAAeHiEDPJ0+nr9uv0AAAAAeACEAPIA+gD9AP0ADAAeARcJDxEPER8hHzMP/wAAAQABAAEAAQAhADMADwAAAACcnOLC/dz/3v/m/+b/AACcAOIA/QD/AP8A/wD/AAAAAAAAAwMOCx4OHw8fAR8AAAAAAwAOABoAHwAfAB8AYBDwCLBI6BzoHNg+Nv/2/xAACAAIABwAHAA+AP8A/wAAAwMEBwgHCA8QDxAPEA8QAAAAAAMAAgAFAAUABQAFAADAgCDAEOAwMFgwWLDYsNgAAEAA4ABgALAAsAAwACAAABgQJDhCPEZ0iXaLdot2iwAACAAcABwAJgAkACQAJAA8AEI8gX6BfoF+gX5CPCQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEA/3+AfoAAAAAAAAAAAAAAAABgAH8AAHx8goaBkpGquYKpgqmCqQAAcAB4AGwARgBGAEYARgAAZ27xGeYfMQ8/AD89QgB/ZwDxAOAAMQA/AA8AHAABAAgACAB/AD4AHAA+AGMAAAAIAAgAfwA+ABwAPgBjAAAAf/9z/y9/HD8AHQECAQIAA/8A/wB/AD8AHAAAAAEAAAC6/Tr9Wr0A/niE+AT4BAD8/QD9AL0AGgB4APgA+AAAAD//f/9z/yx/GT4HGAcIAA+/AP8A/wB8ADkAEwAHAAAAnP+c/2yfAv3sE+Id7BIA/P8A/wCfAA0A4gDuAOwAAABsn2Oce4R7hDhHMEkBMgADLwBkAHgAeAA7ADAAAAAAAGb/mGf+Af4B/AIA/PgEAPz/AGcAAQABAAIAfAD4AAAAB+9hl2KddY52j3aPB/8ABw8ARwBlAHYAdwB3AAcABwDu/5z+XL/iHf4B/AJwjADw/wD+AL8AHQABAAIAjADwAA8QDxAOEA8RBgkHDAMHAAMFAAUABQAEAAYAAwAAAAAAsNiw2LDYkNhgsKAwwOAAwCAAIAAgACAAQADAAAAAAAAAGBgsGDwAJAAkGCQYJBgkAAAAAAAAGAAYABgAGAAYAEI8QjyBfoF+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYF//yDvIGkweQAxAAAAAH4AAAAQABAAAAAAAAAAAACCqYKpgqmqkZKBwsF8/gB8RgBGAEYATgB+AD4AAAAAAAAPDz8wf0fIAP9/gH+AAP8AAAAAAAAwAAAAUABQAAAAAAAQABAAfAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= AAMDBAcICxgLGBcwFzA/QAAAAAAAAAQABAAMAAgAAQAAwMAgoDCQGNAY6AT4BPwCAAAAAEAAYABgADAAAADAAAADAwQHCAoZChkWMRUyPUIAAAAAAAAEAAQADAAIAAEAAMBAoCCwkFjQOOgEeIS8QgAAAABAACAAQAAwAAAAgAAABwcfGDggYCB0QNRA1EDABwAfAD8AfwBrAOsA6wD/AADw4PwYHgwOGBwwPAgOBAfwAPwA/gD+APwA/AD+AP8AAAAAAwMMDxMcLwssN3gAfwAAAAABAAMAHwAcABgAAAAAAADggBjg5Bz+7B72D8o3AAAAAOAA+AD4ABgADAAEAAAAAAEABwAHAAMAAwADAg8AAAAAAAAAAAAAAAACAA4AAGBAoMAwYJYknhbPMu8Y9gAAAACAAEYARgAnAAMAAgAAAAAHBxwPORtzLG89/gD/AAAAAAUAGwA/ADcAZgAAAAAAAMAAMPD4APz4BPwCNMoAAAAAwADwAPgAAAAAAAAAADAwSHiEeIRwjAxyLmEWMQAAAAAAAAAAAAAMAB4ADgAAAQADAwQHCAcIAwQBAgABAAAAAAAAAAAAAAAAAAAAAAAAAAcDHhsmOkY6RnuHYJ8AAAAABgAHAAcABwAGAAAAAAAA4MB4WGRcYtzi3uEG+QAAAADgAOAA4ABgAGAAAAA/QC9gJWAWMBcwDxADDAADAwATABsACQAIAAAAAAAAAPwC/ALUBiAE6AzwGMAwAMDgAOAA6ADYABAAAAAAAAAAO0QrZCFkEjQXMA8QAwwAAwMAEwAbAAkACAAAAAAAAAC8QrxC1AYgBOgM8BjAMADAoACgAOgA2AAQAAAAAAAAAEDAQMBAwCBgIGAYOAcfAAf/AP8A/wB/AH8APwAfAAcABAcIDjA8GBwMDhge4PwA8P8A/gD8APwA/gD+APwA8AAbPxc/AH9/gCFeFik4RgA4GwAXAAAAAAAAAAAAAAAAAEq3fII4xIB4gEAAgAAAAAAEAAAAAAAAAAAAAAAAAAAADz8/f37/eP4geAAgAAAAAD8AfwD/AP4AeAAgAAAAAAAI5gTyDHMEewA8ADAAAAAAEAAIAAgABAAAAAAAAAAAAB5/LX8A/3+AIl0i3X+AAH8eAC0AAAAAAAAAAAAAAAAA1Orc4gj04BhgkMAgAMAAAMAAwAAAAAAAAAAAAAAAAAAAAAAHBgsMFwgfAH9gn4B/AAAAAAMABwAPAA8ABwAAAAA8PMJCvVyjPsE+wT7BHOIAADwAQgBAAIAAgAAAAAAAW79dv0C/H2AUKwwTBwgABxsAHQAAAAAAAAAAAAAAAADa/br9Av34BijUMMjgEADg2AC4AAAAAAAAAAAAAAAAAAIFBDshXmn2HeIe4Q/wAH8AAAAAEABoAFwAXgBvADAACPfvFPcJ9wn3CuMcHuEZ5gAABAABAAEAAgAMAAEAZgDAPCDc0C7QbuhW6JSAeHCIAAAAAAAAQABAAIAAAABwAAIFBDshXmn2HeIe4Q/wA3wAAAAAEABoAFwAXgBvADMACPfvFPcJ9wn3CuMcHOObZAAABAABAAEAAgAMAAAAowDAPCDc0C7QbuhW6JZQrJBsAAAAAAAAQABAAIAAAACAAAAAAD0hXkD/AP8A/xlmWMcAAAAAHAB+AH4AYgAYADgAAH5+gYF+AP8A/4F+/0LDPAAAAAAAAAAAAAAAAEIAPAAAAQEeEC8gf0D/BPsH/CRLAAAAAAwAOABwAHAABAAzAAD4+AcG+QD/BPsa5fs0JtgAAAAAAAAAAAEAAgAzAMcAAAAA4MBwgPgA/AD8AHxAfAAAAABgAPAA8ABwALAAgAAAAAcHGB8gPyA/QH9Af0B/BwAfAD8AfwBrAOsA6wD/AAAA4OAY+Az8GPgw8Aj4BPzwAPwA/gD+APwA/AD+AP8AAAAAAAAOAD8gX0D/AP8A/wAAAAAAAA4AHwB/AH8AfgAAAAA8PMPDPAD/AP+BfsM8AAAAAAAAAAAAAAAAAAAAAA4OHxEfEB8QHxEODgAAAAAAAAEAAAAAAAAAAAAAAAAABzgECwAHBAsADwAOAAAAAAcABAADAAMABgAAAAAAAAAn2A7xAO4A4ACAAAAAAAAAGACAAMAAgAAAAAAAAAAAAHiGeId4hzBPAD8ECwAGAAB4AHoAegA2AAYAAgAAAAAAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn2A8wL1A2SQA/AD8oVwB/FwAPAC8ANgABABcABwAAAMA4gHCAQADAAOAA4ADAAADAAIAAgAAAAMAAwAAAAAAAR8gvcA8wDxAGGQgfGC8APzAAAAAAAAAAAAAIAA8AAAB+w4F+vUJCvf9CAP8AvQCBQgA8AAAAPABCADwAAAAAAAt8cI97hHiHME8ANwQPAA8AAAMAAAABAAIAAwAHAAAA2CQ9w75BPsHdIwH/Av0A5wMAgAAAAIAAAQABAMEAAADQ7IDYUJwA/ADwwPAA+AD4AAAgAGAAAADgAOAA8AAAAEB/QH9AfyA/ID8YHwcHAAD/AP8A/wB/AH8APwAfAAcABPwI+DDwGPgM/Bj44OAAAP8A/gD8APwA/gD+APwA8AABfzmGArs6x3yDfIN4hwB/AwB4AEQAAAAAAAEAAwAAAP8A/8PDPP/DQ7x/gwD/AL0AAMMAPADDADwAAwA8AAAAOEA4QHiAeIB8gDxAHCAEGAAAAAAAAAAAAAAAAAAAAAAgYx0+Ax8LFAsUAx8DFAUWHAAAAAMAAAAAAAMACAAIAAD/wzz/AL3Dwzz/AL3DwzwAAAAAAADDADwAAADDADwAAAEAAQAAAAEAOQh9VC8GfwAAAAAAAAAAAAAIAAQABgA3OOT7DPO3SLhHv3A7zNwjwAAAAAAAAAAAADAADADDAAIAEgAIAAAHZgkGGQ4RDhEAAAAAAAAAAAAAAAAAAAAAQABIABAAAOBmkGCYcIhwiAAAAAAAAAAAAAAAAAAAAAAAeDjEfIN9gjlGADwDDwADAAAAAAAAAQABAAMAAAAAAH+AYJ9Lvxv/v3+/fx9/yL8AAAAAGwAbAL8AvwC/AFgA/AMa5Uf4Zfr3+Or1zPOb5AQACABgAHAA8QDiAMAAwwAAAAAAAIAAgACAAIAAwMAgAAAAAAAAAAAAAAAAAADAAAAAAAAAwMAwgHwI9uAe+gUAAAAAAAAAAAAAAAAAAAAAAAMABAMHBG8oXxYvK9dFuwAAAwADAAUACAAGAAMAAQAA4GAY4OQY+uga9A10jXSNAACAAPgA/AAcAA4ADgAOAAAkACQAJAAAQgDDADwAAAAAAAAAAAAAAEIAwwA8AAAAAAAADgwXGC8QPyBfMM9whwAAAAAGAA8AHwAvADYAeAAAAADwAPwQ7gj2AP8A/8A/AAAAADAAKAAUAAwAAAAAABUmGiMaIwB+MH5A/kC8AHAYABwAHAAAADwAfAAwAAAA/wC9w0K9PMMAPAAAAAAAAAAAwwA8AAAAAAAAAAAAAAACfwI/KhcEPwAeAAAAAAAAAgACAAIABAAAAAAAAAAAAO8Qw1yE+wOMAAMAAAAAAADgAKQAAwAAAAAAAAAAAAAADjEmWRhnOMEww3CDaY9YnwAAAAAYAD4APAB8AHEAYABwjGSaGOYcgwzDDsGW8Rr5AAAAABgAfAA8AD4AjgAGAAAAAAAAAwAGAAcAPyB/AH8AAAAAAAABAAAABwA/AAAAYJ94h58APyAf8Af4AP8A/GcAcADgAMAAAADgAPgAAAAG+XyD8QL7DPMcwzwB/gA/hgAcAAwAAAAAAAgAHAAAAMAgINDAMOAQ4BjgHMQ+AP7AACAAAAAAAAAACAAcAAAAAAAAAAABAQYDHAA/D3A/QAAAAAAAAAAAAAAAAAAAAAAyTQ0yAR4FDgAHAAEAAAAAAAAAAAAABAAAAAAAAAAAAPQNlG2Mftw+uHwg+ABgAAAOAA4AGAA4AGAAYAAAAAAAADg4RHyCfIJ4hAB4aIxojAAAAAAAAAAAAAAAAHAAcABkhxqcpnjYJ4tXAp8YLwA/eABjAAcAAAADAAMADwAAAGCfuMZeYQb5GOYA+ADwAPAAAAAAgAAAAMAAwADgAAAAAH8/wEeHXJx4uHCweLhcnAAAAAA4ACMABwAPAAcAIwAA//8Ah4ccHDg4MDA4OBwcAAAAAHgA4wDHAM8AxwDjAAD//wCHhxwcODgwMDg4HBwAAAAAeADjAMcAzwDHAOMAAP74A4aHHh86OzIzOjseHwAABAB4AOAAxADMAMQA4AAAAAAAAAAAOCBYQPwA/wX+AAAAAAAAAAAQAHAAeABAAAAAAAAAAAAAAAAAAACBgX4AAAAAAAAAAAAAAAAAAAAAAHgw/mD/QP8A/gB4AAAAAHgA/gD/AP8A/gB4AAAAAAAAAWwB/gH+AdYp/gFsEw9/AAAAAAAAAAABAAEAEwAAAADAwDDwCHCImGRI9AD+gv0AAAAAAAAAAAAA4ADwAAgAAABsAP4A/gHWKf4BbBMffwAAAAAAAAAAAQABABMAAAAAAADgYJBwiBjkiHQo1GCYAAAAAAAAAACAAEAAgAAAAAB/P8B/gH+Af4B/gH+Af4AAAD8AYABAAEAAQABAAEAAAP78A/4DvkO+Q75DvkO+QwAA/AAEAAAAAAAAAAAAAAAADAAPDhEFGAA+AD8ADwADAAAAAAgABgABAAAAAAACAABgYPgw+IBw4JxYxw7hBPpgAPgAOAAAAAAAIAAYAAQAAAMCBQYJDhEMEhgkECgAOAAAAAAAAAAAAAAAAAAAAABHhzD/AH8AAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAIeHMP8A/wAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAh4cw/wD/AAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAACGhxz/AP4AAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAN1e54N/1WuBv8CfypXAD4JABoADQAEAAYAAgACAAAA/wA8w8M8PMPDPDzDwj0AfgAAwwA8AMMAPADDADwAAAAAAAAAAP8A/wAAAAAAAAAAAAAAAP8A/wAAAAAAAAAAAHCIG+RrlBNsDzADDAADAAAHAAMAAAAAAAAAAAAAAAAAco3iHQL94AvgEMAwMMgAeAAACAAYADAAAAAAAAAAAABgkHeIV6gLdAt0M0wAMwAADwAHAAAAAAAAAAAAAAAAAGCewj2yXeQK5BqAdGCQAOAIABgAKAAwAAAAAAAAAAAAfIN2j26bbJ9xjn+AP/8Af0AAQABAAEAAQABgAAAAAAA+wz7DPsN+g/4D/gf8/wD+AAAAAAAAAAAAAAAAAAAAAAMHBw8HDw8fDh8ePww+AAwHAA8ADwAfAB8APwA+AAwAAP6A/ACMAIAAAAAAAAAAAAAAwACAAIAAAAAAAAAAAAAAAgACAAIAAgA+MF4gfgA8AAAAAAAAAAAAAAAAAAAAAAAAAAEAAwAHAw8KHwQfFC8AAAAAAAEAAwAHAA8ADwAfAD4i/wH/gf8Y/yf/CP/iHwAAAD4A/wD/AN8A5wD4AP4AAAAAAICAwIDgwPDg8ADgAAAAAAAAAIAAgADAAOAAAAAHDAMYBDAIMAhgEWASwCIAAAIIBBMIJwgnEE4RTCGcAAAAxsY5Mg8kEgTiCHQQmAAAAAAGwADwEOwgHIAIYAAIBjwBcAhgEcAiwC6AfwYeAAgAMghHEE4hnCGQAIABIAAwMMgAeBDMwPCAkADQQGAAADAAQIAAMAAAYAAgAIAAAAAcY0CgWYBAgADAAEAA8AAAABxAH0A/QD8APwA/MA8AAwPnAh5oFCwSEA8AGBjgAAAAAAHgC+AN4ADwEODgCAAAAAAAADAw4OAAgAAAAAAAAAAA4ADAEADgAAAAAAAAAAAAAAAAAAAAPz/Hf4AA/wAAAAAAAAAAAAA4AH8AAAAAAAAAAAAAAADAwODA4ADgAAAAAAAAAAAAAAAAAAAAAAQODDo4dDhEOERwiGCQAGAAAAQACAA4ADgAcABgAAAAADAgcCBQYJBwiDBIADAAAAAAAAAgAGAAcAAwAAAAAAAAAAAAAAAAPDx+Psd+gwD/AAAAAAAAAAAAADgAfAAAAAAAAAAAAAAAADAwfHyGAP4AAAAAAAAAAAAAAAB4AAAAES4bJAo1CjUbJAA/AH8gfwAfAA4RDhEOAB8AHwAfAD/RL5BvEO/gHwH/Af8A/wL9IB9gH+AfAP8A/wD/AP8A/QDAAMCAwIDAgMCA4KDw4PAAAAAAAIAAgACAAIAAoADgwSPBPYB/AwQADwwcBh4IGCCcIoAAgAMAAAADAAEABwAgsIDgQOAAwADAQGBAYODwQAAAAAAAAAAAAIAAgAAAAAAMBA8GCQYPBg8ABgAAAAADAAAABgAAAAAAAAAAAAAAICAgMACQQNAg6Dh8HD4sPMAAwABgACAAEAAAAAAAAiBgn38AHwAAAAAAAAAAAAAAHwAAYAAfAAAAAAAAAAAAAHCA4ACAAAAAAAAAAAAAAACAEABgAIAAAAAAAAAAAAAAAAAAAAAAAAAwCHANZBNhEAAAAAAAAAAAADAIQBBMEE8AAAAAAAAAAADAwCCAYCCPAAAAAAAAAAAAAMAAAICAYAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwIHAB8QPxE/AAAAAAAAAAAAAwAHAB8AHwAAAAAAcHD4cPhg8ODwgPgAAAAAAAAAcADwAOAA4ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA/0D/AP9A/zB/Dz8ADwAAAH8AfwB/AH8APwAPAAAAAAL9BPsR7wf/fP/A/ADAAAAA/QD7AO8A/wD8AMAAAAAAYPBA4MDgAMAAAAAAAAAAAADgAMAAwAAAAAAAAAAAAAAAHwwTDBIMHgAMAAAAAAAAAAAMAAwAAAAAAAAAAAAAAODw4O8w8A8/AA8AAAAAAAAAABAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBMMAjwSXAJcInwzdgH2McMI8gnCKYIpggmDCIEEADQCmfIB8E/ww/WH9Y/xH+V7iAbwD/AB/AH4AfAB8APwB+gMBA8CD4OPzM/hb/yj/gHgCAAMAA4AD4AMwA9gD6ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACB/An8U/zP8U/xX+CfYMk0APwA/AD8AfwB+AHwAPAEccPwY/8Y/It+gX6BfYZ7APwBwAPgA/sA+QD5APoB+AP8AAAAAAIAAwMDgQOCA8KDwAAAAAAAAAAAAwADAAIAAgAAAAAAAAAAAAQABAgcEAgUAAAAAAAAAAAAAAgAEAAUABwgeIH4A7BDsEGiQaJBokAgAIAAAABAAEACQAJAAkAAAAQADAAcABwAPCBcdIh0iAAAAAQADAAMABwAPAAcABwD/AP9A/4z/BP/BP/Af/AcAAAD+AP8A7wD8AP8AvwAfAAAAgIDQEPhg+ADwgOAA4AAAAAAAgACQAGAAAACAAIAAAAAAAAMDBwQPDBsHGAcYAAAAAAAAAAMABwANAAUIAQADAn8I/3H/gP8P8T3CPMMAAAADAH8A/QD/AP8C8QPgAOAg/Az+wP/B/wD/4B8yzwAAAOAA/AD8AM8A8AD8wD4AAAAAAAAA4MDgAMAAAAAAAAAAAAAAAAAAwAAAAAAAAAA3AgYHDwYKAg8DBAEOBQ4AAAEAAAABBAAAAQIBAAEEB/g4Jyk2IS4y87x8h3+I/wAcxxjGCdABDACDAIAAADikXiDewD4E/mT/5f+r90n3QDzAPAD8APwAPAA9ADcAdwAAAAAAAAAAAAAAgACAAIAAAAAAAAAAAAAAAAAAAAAAG0Q5RgA/AD8AHwAPAAcAAAAPAD8AHwAfAA8ABwAAAACCfQT7BvsA/wH/BP+Y/AD4AP0A+gD6APwA/QB8APgAAGDwYNDgkOCQ4BBAoADgAAAAACAAYABgAOAAQAAAAAAADAsECxwXHBcsPzwvLj9efwsACwAXABcAPwAvAD8AfwBgkHCAcIBwgCDAIMAgwCjAkACAAIAAgADAAMAAwADIAB0iFSoINxAvEH8QfyB/IH8ABwgHEA8AHwAfAB8APwA/9wtmm4x3eI8A/wH+Av0I9wgHmAdwjwD/AP8A/gD9APdA4EDgwOCA8FD4cPgg8ODwAMAAwADAAIAA0ADwAOAA4AAfAB8efyH/ZJ94jx9jAB8OAAABAB8AP2AHcAAcAAAAIN8Y5wf4x/8A/4H/AP8AgB/gB/gA/wD/AP8A/wAAAAAQz3uf43+E/xP8z/g84wB+wDyAewD/APwD8AfAHAAAAAAAAMDA4EDgAMAAgAAAAAAAAAAAAMAAQAAAAAAAAAAABQ8EDwYPAQcAAwEGAwQABwAEAAYABwABAAABAAMAAACH/wD/AP/B/z7/gH/wGAD4AD8AfwD/AP8APoAA4AAAABDvRr8Y/uD8HP58437BAP8A7gC+APgA4AAAHAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPby9PJ0eH55Pj0aFYIFggbxBPEEcY5xjjHKEeIJ8gnyzABuAD4JDgnPDf/P/vf3DMAOYA4wDwAOwA4wDwAG+ACH8DHwADAAAAAAAAAAAAAAAPAAMAAAAAAAAAAAAAAAAO//D/APAAAAAAAAAAAAAAAP4A8AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQADAgcGDwU/LX4AAAAAAAAAAAADAAcAByAPABgQeGD4oPAA8CDwwDDg2AAAABAAYADgAOAA4ADAwCAAAAAAAAAAAAADAAcCHxo3AAAAAAAAAAAAAAABAAMQCwAPDh8cfmT+SPyY/HDM/LoAAAAOABwAfAD4APgA8DjEIf4QfwAfCBcOEwcJBwkABwA+AB8ABwgADAAGAAYAAACQfkD4EPh43HjMOMw4zAA4AHAAwAAAIAAwADAAMAAAAAIPAQcAAwECAQIAAQABAAAAAwABAAABAAEAAAAAAAAAYJwA+Aj8GPyYbNhs2GwA2ACQAOAAwAAAkACQAJAAAAAAAAAAAAAYPDx+Psd+gwD/AAAAAAAAAAAAADgAfAAAAMwwzjDHOOEe/AP/AH8AAB8wjzCPOIcegQOAAIAAYAAADx8PEB4BwB4Q4OAQgGAAgADgD+AO8BDg4AAAAAAAAAAAADAw4OAAgAAAAAAAAAAA4ADAEADgAAAAAAAAAAAAAAAAAAcEDwgfAB8CHQd4YZ4AAAAAAAcACQYADQAIAGYAAAAAwMD/Hv8g/wP8bZKoVwAAAAAAwAD/AP8Af4J8RzgAHxD/hv8g51SrukX6BQ7zAAAAHwD+AP8ox0SDBAPwDwCAgODg/Dj8QPhA4ADwcIgAAACAAOAAOADAAMAAgHAAGu1TrHWKd4h3iHeIN8hV6mEeIB4CHAAcABwAHEAcYhzwOMA46BzoHOAc8AzQLKh8IBAgAAAIAAgACAAYIBhgCC9bN2o7YDtlOmU+YQ8wBygYJygHIAclAiUCIQIQAwgTtE54hniG+Ab8BvwC8AxonEyAhACEAAQABAAABAgAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcY54hzxHPmMOOwAOAAAAAHABeAM4ABwABAAAAAAAAADHOD//gP8AwAAAAAAAAAAAAP8A/wCAAAAAAAAAAAAAAPgP4P8G/wEPAAMAAQAAAAAA/wD+AAYAAAAAAAAAAAAAeIz4jPAI4BDAYADAAAAAAHAIcAjwAOAAgAAAAAAAAAAcqR5MQz5xPyB/OV8g/wD/IV4APwBPAH8APwA/AH8Af0j8GH4q/+b/wP/iP8j3NM7ACACYADoA/gD+AP4A9ADMAxUDCQgHBwMCBwMFAg8ADwQLAAcACQAHAAMAAwAHAAcQfIAcyL50/jj+cJ40/gz+cIAA4ADIAPQA/AD8APwA/AAAAAAAAAAEBz8/x3+AAP8AAAAAAAAAAAAAOAB/AAAAAAAAAAAAAACAwMDgwOAA4AAAAAAAAAAAAAAAAAAAAAAA+HiMeIYOcQMNAAMAAAAAAABwAHgADgACAAAAAAAAAAAAAAAAAADAgMAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= 0 0_Hitbox0 2 -4 255 255 0 0 120 255 0 0 DefaultAction 15 15 0 1_Hitbox0 2 -3 255 255 0 0 120 255 0 0 DefaultAction 15 15 0 2_Hitbox0 2 -2 255 255 0 0 120 255 0 0 DefaultAction 15 15 0 3_Hitbox0 2 -3 255 255 0 0 120 255 0 0 DefaultAction 14 15 0 4_Hitbox1 -16 -16 255 0 128 0 120 0 255 0 Detection 32 32 0 5_Hitbox0 2 -2 255 255 0 0 120 255 0 0 DefaultAction 14 15 0 6_Hitbox0 3 0 255 255 0 0 120 255 0 0 DefaultAction 14 13 0 7_Hitbox1 -7 -1 255 255 0 0 120 255 0 0 onlyHurt 10 16 0 8_Hitbox0 2 0 255 255 0 0 120 255 0 0 DefaultAction 15 13 0 9_Hitbox1 -8 8 255 255 0 0 120 255 0 0 onlyHurt 10 9 0 10_Hitbox1 -7 6 255 255 0 0 120 255 0 0 onlyHurt 9 9 0 11_Hitbox0 0 1 255 255 0 0 120 255 0 0 DefaultAction 16 13 0 12_Hitbox0 0 7 255 255 0 0 120 255 0 0 DefaultAction 19 9 walkAxeDown0 0_Hitbox0 $0D $08 1 15 8 32 false false $8C $FE $05 1 15 8 32 false false $8A $06 $05 1 15 8 32 false false $8B $00 $F5 1 15 16 32 false false $80 $00 $FD 1 15 16 32 false false $90 $08 $F5 1 15 16 32 false false $81 $08 $FD 1 15 16 32 false false $91 $F9 $F1 1 15 16 32 false false $83 $F9 $F9 1 15 16 32 false false $93 2 -8 walkAxeDown1 1_Hitbox0 $11 $06 1 15 8 32 false false $8D $00 $08 1 15 8 32 false false $8A $08 $08 1 15 8 32 false false $8B $00 $F6 1 15 16 32 false false $80 $00 $FE 1 15 16 32 false false $90 $08 $F6 1 15 16 32 false false $81 $08 $FE 1 15 16 32 false false $91 $F9 $F4 1 15 16 32 false false $83 $F9 $FC 1 15 16 32 false false $93 2 -8 walkAxeDown2 2_Hitbox0 $03 $08 1 15 8 32 false false $8A $0B $08 1 15 8 32 false false $8B $0F $07 1 15 8 32 false false $8D $00 $F7 1 15 16 32 false false $80 $00 $FF 1 15 16 32 false false $90 $08 $F7 1 15 16 32 false false $81 $08 $FF 1 15 16 32 false false $91 $FA $F4 1 15 16 32 false false $83 $FA $FC 1 15 16 32 false false $93 2 -8 walkAxeDown3 3_Hitbox0 $05 $07 1 15 8 32 false false $8A $0D $07 1 15 8 32 false false $8B $07 $08 1 15 8 32 false false $8C $00 $F6 1 15 16 32 false false $80 $00 $FE 1 15 16 32 false false $90 $08 $F6 1 15 16 32 false false $81 $08 $FE 1 15 16 32 false false $91 $F9 $F2 1 15 16 32 false false $83 $F9 $FA 1 15 16 32 false false $93 2 -8 walkAxeUp0 0_Hitbox0 4_Hitbox1 $0D $08 1 15 8 32 false false $8C $FE $05 1 15 8 32 false false $8A $06 $05 1 15 8 32 false false $8B $00 $F5 1 15 16 32 false false $80 $00 $FD 1 15 16 32 false false $90 $08 $F5 1 15 16 32 false false $81 $08 $FD 1 15 16 32 false false $91 $FC $F3 1 15 16 32 false false $85 2 -8 walkAxeUp1 3_Hitbox0 4_Hitbox1 $11 $06 1 15 8 32 false false $8D $00 $08 1 15 8 32 false false $8A $08 $08 1 15 8 32 false false $8B $00 $F6 1 15 16 32 false false $80 $00 $FE 1 15 16 32 false false $90 $08 $F6 1 15 16 32 false false $81 $08 $FE 1 15 16 32 false false $91 $FD $F4 1 15 16 32 false false $85 2 -8 walkAxeUp2 5_Hitbox0 4_Hitbox1 $03 $08 1 15 8 32 false false $8A $0B $08 1 15 8 32 false false $8B $0F $07 1 15 8 32 false false $8D $00 $F7 1 15 16 32 false false $80 $00 $FF 1 15 16 32 false false $90 $08 $F7 1 15 16 32 false false $81 $08 $FF 1 15 16 32 false false $91 $FD $F5 1 15 16 32 false false $85 2 -8 walkAxeUp3 3_Hitbox0 4_Hitbox1 $05 $07 1 15 8 32 false false $8A $0D $07 1 15 8 32 false false $8B $07 $08 1 15 8 32 false false $8C $00 $F6 1 15 16 32 false false $80 $00 $FE 1 15 16 32 false false $90 $08 $F6 1 15 16 32 false false $81 $08 $FE 1 15 16 32 false false $91 $FD $F4 1 15 16 32 false false $85 2 -8 flip0 2_Hitbox0 $FE $08 1 15 8 32 false false $8A $06 $08 1 15 8 32 false false $8B $0C $08 1 15 8 32 false false $8E $00 $F7 1 15 16 32 false false $80 $00 $FF 1 15 16 32 false false $90 $08 $F7 1 15 16 32 false false $81 $08 $FF 1 15 16 32 false false $91 $F8 $F4 1 15 16 32 false false $83 $F8 $FC 1 15 16 32 false false $93 2 -8 flip1 2_Hitbox0 $FB $F0 1 15 16 32 false false $99 $FB $00 1 15 16 32 false false $B9 $0B $F0 1 15 16 32 false false $9B $0B $00 1 15 16 32 false false $BB 2 -8 axe0 2_Hitbox0 $FD $06 1 15 8 32 false false $8A $0C $08 1 15 8 32 false false $8E $00 $F7 1 15 16 32 false false $80 $00 $FF 1 15 16 32 false false $90 $08 $F7 1 15 16 32 false false $81 $08 $FF 1 15 16 32 false false $91 $FC $F4 1 15 16 32 false false $85 2 -8 axe1 6_Hitbox0 7_Hitbox1 $02 $08 1 15 8 32 false false $8F $00 $F6 1 15 16 32 false false $9D $00 $FE 1 15 16 32 false false $AD $08 $F6 1 15 16 32 false false $9E $08 $FE 1 15 16 32 false false $AE $F8 $F0 1 15 16 32 false false $B0 $F8 $00 1 15 16 32 false false $D0 $08 $08 1 15 8 32 false false $E2 2 -8 axe2 8_Hitbox0 9_Hitbox1 $02 $08 1 15 8 32 false false $8F $00 $F6 1 15 16 32 false false $9D $00 $FE 1 15 16 32 false false $AD $08 $F6 1 15 16 32 false false $9E $08 $FE 1 15 16 32 false false $AE $08 $08 1 15 8 32 false false $E2 $F7 $07 1 15 16 32 false false $87 $07 $07 1 15 8 32 false false $89 2 -8 axe3 8_Hitbox0 10_Hitbox1 $02 $08 1 15 8 32 false false $8F $00 $F6 1 15 16 32 false false $9D $00 $FE 1 15 16 32 false false $AD $08 $F6 1 15 16 32 false false $9E $08 $FE 1 15 16 32 false false $AE $08 $08 1 15 8 32 false false $E2 $F8 $05 1 15 16 32 false false $87 $08 $05 1 15 8 32 false false $89 2 -8 run0 $0F $05 1 15 8 32 false false $8C $05 $08 1 15 8 32 false false $DF $FC $FE 1 15 16 32 false false $EB $FF $F8 1 15 16 32 false false $B2 $FF $00 1 15 16 32 false false $C2 $07 $F8 1 15 16 32 false false $B3 $07 $00 1 15 16 32 false false $C3 2 -8 run1 $01 $08 1 15 8 32 false false $DF $FB $FE 1 15 16 32 false false $ED $0D $07 1 15 8 32 false false $8D $FF $F8 1 15 16 32 false false $B2 $FF $00 1 15 16 32 false false $C2 $07 $F8 1 15 16 32 false false $B3 $07 $00 1 15 16 32 false false $C3 2 -8 spinjumped0 11_Hitbox0 $FA $00 1 15 16 32 false false $EB $0D $08 1 15 8 32 false false $DF $FF $FC 1 15 16 32 false false $B2 $FF $04 1 15 16 32 false false $C2 $07 $FC 1 15 16 32 false false $B3 $07 $04 1 15 16 32 false false $C3 $FB $FB 1 15 16 32 false false $85 2 -8 spinjumped1 12_Hitbox0 $FC $02 1 15 16 32 false false $B5 $0C $02 1 15 16 32 false false $B7 2 -8 spinjumped2 $FB $05 1 15 16 32 false false $E3 $0B $05 1 15 16 32 false false $E5 2 -8 dead0 $02 $F0 1 15 16 32 false false $D7 $02 $F8 1 15 16 32 false false $E7 $02 $08 1 15 16 32 false false $DB 2 -8 dead1 $00 $F0 1 15 16 32 false false $D9 $00 $F8 1 15 16 32 false false $E9 $00 $08 1 15 16 32 false false $DD 2 -8 smoke0 $FA $04 0 15 16 32 false false $60 $08 $04 0 15 16 32 false false $60 2 -8 smoke1 $FB $04 0 15 16 32 false false $62 $08 $04 0 15 16 32 false false $62 2 -8 smoke2 $FB $04 0 15 16 32 false false $64 $08 $04 0 15 16 32 false false $64 2 -8 smoke3 $FB $03 0 15 16 32 false false $66 $08 $03 0 15 16 32 false false $66 2 -8 walkAxeDown0 0 false false walkAxeDown1 1 false false walkAxeDown2 2 false false walkAxeDown3 3 false false 1 walkAxeDown walkAxeUp0 0 false false walkAxeUp1 1 false false walkAxeUp2 2 false false walkAxeUp3 3 false false 1 walkAxeUp flip0 0 false false flip1 1 false false flip1 2 true false flip0 3 true false 0 flip flip0 0 false false axe0 1 false false axe1 2 false false axe2 3 false false axe3 4 false false 0 axe run0 0 false false run1 1 false false 1 run spinjumped0 0 false false spinjumped1 1 false false spinjumped2 2 false false smoke0 3 false false smoke1 4 false false smoke2 5 false false smoke3 6 false false 0 spinjumped dead0 0 false false dead1 1 false false 1 dead flip0 0 false false spinjumped0 1 false false spinjumped1 2 false false spinjumped0 3 false false spinjumped1 4 false false spinjumped0 5 false false spinjumped1 6 false false spinjumped0 7 false false spinjumped1 8 false false spinjumped0 9 false false flip0 10 false false 1 damaged ;###################################### ;############## Defines ############### ;###################################### !FrameIndex = !SpriteMiscTable1 !AnimationTimer = !SpriteDecTimer1 !AnimationIndex = !SpriteMiscTable2 !AnimationFrameIndex = !SpriteMiscTable3 !LocalFlip = !SpriteMiscTable4 !GlobalFlip = !SpriteMiscTable5 ;###################################### ;########### Init Routine ############# ;###################################### print "INIT ",pc LDA #$00 STA !GlobalFlip,x JSL InitWrapperChangeAnimationFromStart ;Here you can write your Init Code ;This will be excecuted when the sprite is spawned RTL ;###################################### ;########## Main Routine ############## ;###################################### print "MAIN ",pc PHB PHK PLB JSR SpriteCode PLB RTL ;>Routine: SpriteCode ;>Description: This routine excecute the logic of the sprite ;>RoutineLength: Short SpriteCode: JSR GraphicRoutine ;Calls the graphic routine and updates sprite graphics ;Here you can put code that will be excecuted each frame even if the sprite is locked LDA !SpriteStatus,x CMP #$08 ;if sprite dead return BEQ + LDA !LockAnimationFlag BEQ + ;if locked animation return. RTS + JSL SubOffScreen JSR InteractMarioSprite ;After this routine, if the sprite interact with mario, Carry is Set. ;Here you can write your sprite code routine ;This will be excecuted once per frame excepts when ;the animation is locked or when sprite status is not #$08 JSR AnimationRoutine ;Calls animation routine and decides the next frame to draw .Return RTS ;>EndRoutine ;###################################### ;######## Sub Routine Space ########### ;###################################### ;Here you can write routines or tables ;Don't Delete or write another >Section Graphics or >End Section ;All code between >Section Graphics and >End Graphics Section will be changed by Dyzen : Sprite Maker ;>Section Graphics ;###################################### ;########## Graphics Space ############ ;###################################### ;This space is for routines used for graphics ;if you don't know enough about asm then ;don't edit them. ;>Routine: GraphicRoutine ;>Description: Updates tiles on the oam map ;results will be visible the next frame. ;>RoutineLength: Short GraphicRoutine: JSL GetDrawInfo ;Calls GetDrawInfo to get the free slot and the XDisp and YDisp STZ !Scratch3 ;$02 = Free Slot but in 16bits STY !Scratch2 STZ !Scratch5 LDA !GlobalFlip,x EOR !LocalFlip,x STA !ScratchF ASL STA !Scratch4 ;$04 = Global Flip but in 16bits LDA !ScratchF CLC ROR A ROR A ROR A STA !ScratchF PHX ;Preserve X STZ !Scratch7 LDA !FrameIndex,x STA !Scratch6 ;$06 = Frame Index but in 16bits REP #$30 ;A/X/Y 16bits mode LDY !Scratch4 ;Y = Global Flip LDA !Scratch6 ASL CLC ADC FramesFlippers,y TAX ;X = Frame Index LDA FramesLength,x CMP #$FFFF BNE + SEP #$30 PLX RTS + STA !Scratch8 LDA FramesEndPosition,x STA !Scratch4 ;$04 = End Position + A value used to select a frame version that is flipped LDA FramesStartPosition,x TAX ;X = Start Position SEP #$20 ;A 8bits mode LDY !Scratch2 ;Y = Free Slot CPY #$00FD BCS .return ;Y can't be more than #$00FD - LDA Tiles,x STA !TileCode,y ;Set the Tile code of the tile Y LDA Properties,x EOR !ScratchF STA !TileProperty,y ;Set the Tile property of the tile Y LDA !Scratch0 CLC ADC XDisplacements,x STA !TileXPosition,y ;Set the Tile x pos of the tile Y LDA !Scratch1 CLC ADC YDisplacements,x STA !TileYPosition,y ;Set the Tile y pos of the tile Y PHY REP #$20 TYA LSR LSR TAY ;Y = Y/4 because size directions are not continuous to map 200 and 300 SEP #$20 LDA Sizes,x STA !TileSize460,y ;Set the Tile size of the tile Y PLY INY INY INY INY ;Next OAM Slot CPY #$00FD BCS .return ;Y can't be more than #$00FD DEX BMI .return CPX !Scratch4 ;if X < start position or is negative then return BCS - ;else loop .return SEP #$10 PLX ;Restore X LDY #$FF ;Allows mode of 8 or 16 bits LDA !Scratch8 ;Load the number of tiles used by the frame JSL $01B7B3|!rom ;This insert the new tiles into the oam, ;A = #$00 => only tiles of 8x8, A = #$02 = only tiles of 16x16, A = #$04 = tiles of 8x8 or 16x16 ;if you select A = #$04 then you must put the sizes of the tiles in !TileSize RTS ;>EndRoutine ;All words that starts with '@' and finish with '.' will be replaced by Dyzen ;>Table: FramesLengths ;>Description: How many tiles use each frame. ;>ValuesSize: 16 FramesLength: dw >fls. ;>EndTable ;>Table: FramesFlippers ;>Description: Values used to add values to FramesStartPosition and FramesEndPosition ;To use a flipped version of the frames. ;>ValuesSize: 16 FramesFlippers: dw >ffps. ;>EndTable ;>Table: FramesStartPosition ;>Description: Indicates the index where starts each frame ;>ValuesSize: 16 FramesStartPosition: dw >fsp. ;>EndTable ;>Table: FramesEndPosition ;>Description: Indicates the index where end each frame ;>ValuesSize: 16 FramesEndPosition: dw >fep. ;>EndTable ;>Table: Tiles ;>Description: Tiles codes of each tile of each frame ;>ValuesSize: 8 Tiles: db >tiles. ;>EndTable ;>Table: Properties ;>Description: Properties of each tile of each frame ;>ValuesSize: 8 Properties: db >props. ;>EndTable ;>Table: XDisplacements ;>Description: X Displacement of each tile of each frame ;>ValuesSize: 8 XDisplacements: db >xdisps. ;>EndTable ;>Table: YDisplacements ;>Description: Y Displacement of each tile of each frame ;>ValuesSize: 8 YDisplacements: db >ydisps. ;>EndTable ;>Table: Sizes. ;>Description: size of each tile of each frame ;>ValuesSize: 8 Sizes: db >sizes. ;>EndTable ;>End Graphics Section ;Don't Delete or write another >Section Animation or >End Section ;All code between >Section Animations and >End Animations Section will be changed by Dyzen : Sprite Maker ;>Section Animations ;###################################### ;########## Animation Space ########### ;###################################### ;This space is for routines used for graphics ;if you don't know enough about asm then ;don't edit them. InitWrapperChangeAnimationFromStart: PHB PHK PLB STZ !AnimationIndex,x JSR ChangeAnimationFromStart PLB RTL ChangeAnimationFromStart_walkAxeDown: STZ !AnimationIndex,x JMP ChangeAnimationFromStart ChangeAnimationFromStart_walkAxeUp: LDA #$01 STA !AnimationIndex,x JMP ChangeAnimationFromStart ChangeAnimationFromStart_flip: LDA #$02 STA !AnimationIndex,x JMP ChangeAnimationFromStart ChangeAnimationFromStart_axe: LDA #$03 STA !AnimationIndex,x JMP ChangeAnimationFromStart ChangeAnimationFromStart_run: LDA #$04 STA !AnimationIndex,x JMP ChangeAnimationFromStart ChangeAnimationFromStart_spinjumped: LDA #$05 STA !AnimationIndex,x JMP ChangeAnimationFromStart ChangeAnimationFromStart_dead: LDA #$06 STA !AnimationIndex,x JMP ChangeAnimationFromStart ChangeAnimationFromStart_damaged: LDA #$07 STA !AnimationIndex,x ChangeAnimationFromStart: STZ !AnimationFrameIndex,x STZ !Scratch1 LDA !AnimationIndex,x STA !Scratch0 ;$00 = Animation index in 16 bits STZ !Scratch3 LDA !AnimationFrameIndex,x STA !Scratch2 ;$02 = Animation Frame index in 16 bits STZ !Scratch5 STX !Scratch4 ;$04 = sprite index in 16 bits REP #$30 ;A7X/Y of 16 bits LDX !Scratch4 ;X = sprite index in 16 bits LDA !Scratch0 ASL TAY ;Y = 2*Animation index LDA !Scratch2 CLC ADC AnimationIndexer,y TAY ;Y = Position of the first frame of the animation + animation frame index SEP #$20 ;A of 8 bits LDA Frames,y STA !FrameIndex,x ;New Frame = Frames[New Animation Frame Index] LDA Times,y STA !AnimationTimer,x ;Time = Times[New Animation Frame Index] LDA Flips,y STA !LocalFlip,x ;Flip = Flips[New Animation Frame Index] LDA !Scratch2 STA !AnimationFrameIndex,x SEP #$10 ;X/Y of 8 bits LDX !Scratch4 ;X = sprite index in 8 bits RTS ;>Routine: AnimationRoutine ;>Description: Decides what will be the next frame. ;>RoutineLength: Short AnimationRoutine: LDA !AnimationTimer,x BEQ + RTS + STZ !Scratch1 LDA !AnimationIndex,x STA !Scratch0 ;$00 = Animation index in 16 bits STZ !Scratch3 LDA !AnimationFrameIndex,x STA !Scratch2 ;$02 = Animation Frame index in 16 bits STZ !Scratch5 STX !Scratch4 ;$04 = sprite index in 16 bits REP #$30 ;A7X/Y of 16 bits LDX !Scratch4 ;X = sprite index in 16 bits LDA !Scratch0 ASL TAY ;Y = 2*Animation index INC !Scratch2 ;New Animation Frame Index = Animation Frame Index + 1 LDA !Scratch2 ;if Animation Frame index < Animation Lenght then Animation Frame index++ CMP AnimationLenght,y ;else go to the frame where start the loop. BCC + LDA AnimationLastTransition,y STA !Scratch2 ;New Animation Frame Index = first frame of the loop. + LDA !Scratch2 CLC ADC AnimationIndexer,y TAY ;Y = Position of the first frame of the animation + animation frame index SEP #$20 ;A of 8 bits LDA Frames,y STA !FrameIndex,x ;New Frame = Frames[New Animation Frame Index] LDA Times,y STA !AnimationTimer,x ;Time = Times[New Animation Frame Index] LDA Flips,y STA !LocalFlip,x ;Flip = Flips[New Animation Frame Index] LDA !Scratch2 STA !AnimationFrameIndex,x SEP #$10 ;X/Y of 8 bits LDX !Scratch4 ;X = sprite index in 8 bits RTS ;>EndRoutine ;All words that starts with '>' and finish with '.' will be replaced by Dyzen AnimationLenght: dw >anl. AnimationLastTransition: dw >alt. AnimationIndexer: dw >ai. Frames: db >af. Times: db >aft. Flips: db >aff. ;>End Animations Section ;Don't Delete or write another >Section Hitbox Interaction or >End Section ;All code between >Section Hitboxes Interaction and >End Hitboxes Interaction Section will be changed by Dyzen : Sprite Maker ;>Section Hitboxes Interaction ;###################################### ;######## Interaction Space ########### ;###################################### InteractMarioSprite: LDA !SpriteTweaker167A_DPMKSPIS,x AND #$20 BNE ProcessInteract TXA EOR !TrueFrameCounter AND #$01 ORA !SpriteHOffScreenFlag,x BEQ ProcessInteract ReturnNoContact: CLC RTS ProcessInteract: JSR SubHorzPos LDA !ScratchF CLC ADC #$50 CMP #$A0 BCS ReturnNoContact ; No contact, return JSR SubVertPos LDA !ScratchE CLC ADC #$60 CMP #$C0 BCS ReturnNoContact ; No contact, return LDA $71 ; \ If animation sequence activated... CMP #$01 ; | BCS ReturnNoContact ; / ...no contact, return LDA #$00 ; \ Branch if bit 6 of $0D9B set? BIT $0D9B|!addr ; | BVS + ; / LDA $13F9|!addr ; \ If Mario and Sprite not on same side of scenery... EOR !SpriteBehindEscenaryFlag,x ; | + BNE ReturnNoContact2 JSL $03B664|!rom ; MarioClipping JSR Interaction BCC ReturnNoContact2 LDA !ScratchE CMP #$01 BNE + JSR DefaultAction + SEC RTS ReturnNoContact2: CLC RTS SubHorzPos: LDY #$00 LDA $D1 SEC SBC !SpriteXLow,x STA !ScratchF LDA $D2 SBC !SpriteXHigh,x BPL + INY + RTS SubVertPos: LDY #$00 LDA $D3 SEC SBC !SpriteYLow,x STA !ScratchE LDA $D4 SBC !SpriteYHigh,x BPL + INY + RTS Interaction: STZ !ScratchE LDA !GlobalFlip,x EOR !LocalFlip,x ASL TAY ;Y = Flip Adder, used to jump to the frame with the current flip LDA !FrameIndex,x STA !Scratch4 STZ !Scratch5 REP #$20 LDA !Scratch4 ASL CLC ADC HitboxAdder,y REP #$10 TAY LDA FrameHitboxesIndexer,y TAY SEP #$20 - LDA FrameHitBoxes,y CMP #$FF BNE + LDA !ScratchE BNE ++ SEP #$10 LDX !SpriteIndex CLC RTS ++ SEP #$10 LDX !SpriteIndex SEC RTS + STA !Scratch4 STZ !Scratch5 PHY REP #$20 LDA !Scratch4 ASL TAY LDA HitboxesStart,y TAY SEP #$20 LDA !ScratchE AND #$01 BEQ + LDA Hitboxes+5,y BNE + PLY INY BRA - + STZ !ScratchA LDA Hitboxes+1,y STA !Scratch4 ;$04 = Low X Offset BPL + LDA #$FF STA !ScratchA ;$0A = High X offset + STZ !ScratchB LDA Hitboxes+2,y STA !Scratch5 ;$05 = Low Y Offset BPL + LDA #$FF STA !ScratchB ;$0B = High Y Offset + LDA Hitboxes+3,y STA !Scratch6 ;$06 = Width LDA Hitboxes+4,y STA !Scratch7 ;$07 = Height PHY SEP #$10 LDX !SpriteIndex LDA !SpriteXHigh,x XBA LDA !SpriteXLow,x REP #$20 PHA SEP #$20 LDA !ScratchA XBA LDA !Scratch4 REP #$20 CLC ADC $01,s PHA SEP #$20 PLA STA !Scratch4 PLA STA !ScratchA PLA PLA LDA !SpriteYHigh,x XBA LDA !SpriteYLow,x REP #$20 PHA SEP #$20 LDA !ScratchB XBA LDA !Scratch5 REP #$20 CLC ADC $01,s PHA SEP #$20 PLA STA !Scratch5 PLA STA !ScratchB PLA PLA JSL $03B72B|!rom REP #$10 BCS ++ PLY BRA + ++ PLY LDA Hitboxes+5,y BNE ++ LDA !ScratchE ORA #$01 STA !ScratchE PLY INY JMP - ++ STA !ScratchC STZ !ScratchD REP #$20 LDA !ScratchC ASL TAY LDA Actions,y STA !ScratchC SEP #$30 LDX #$00 JSR ($000C|!dp,x) REP #$10 + PLY INY JMP - HitboxAdder: dw >intAdd. FrameHitboxesIndexer: dw >fhbsInd. FrameHitBoxes: db >fhbs. HitboxesStart: dw >hbst. Hitboxes: db >hbs. Actions: dw >hbacts. ;This routine will be executed when mario interact with a standar hitbox. ;It will be excecuted if $0E is 1 after execute Interaction routine DefaultAction: RTS ;>End Hitboxes Interaction Section ;>Action ;### Action onlyHurt ### onlyHurt: LDX !SpriteIndex ;Here you can write your action code RTS ;>End Action ;>Action ;### Action Detection ### Detection: LDX !SpriteIndex ;Here you can write your action code RTS ;>End Action +OgAIEBgiKiYANhYmADo+A== 4PBYaHiIoLjgADj44ADwWA== sPgQAAAAAADgABhY4AD4WA== +Oj4AAAAAACYAFj4mADY+A== 4PD4ALjI4PjgAKj44ACg2A== sPj4APj4+PjgAPD44AA4cA== +OgAeMgA4AAA+AAAsPj4+A== 4PAAaJh4wMgA+ADIAABYoA== sPgAGFhIUAAA+AAAAAAAAA== +OgAWHiYwOAA+AAA6PD4+A== 4PAAWHiYwOAA+ADIGEB4wA== sPgAWHiYwOAA+AAAaKjI8A== +OhwAMCgqMAA+AAAAIjI+A== 4PBwAMDI4PgA+ADI4Pj4+A== sPhwAMD4+PgA+AAAADgAmA== +OgAuNgAAAAAAAAAAAAAAA== 4PAAqPiAyPgAAAAAAAAAAA== sPgAYMgAAAAAAAAAAAAAAA== +OgAiPjY+PgAAAAAAAAAAA== 4PAAWAig2PgAAAAAAAAAAA== sPgAGPg4IAAAAAAAAAAAAA== +OgAuPhIaIAAAAAAAAAAAA== 4PAAAABIaIAAAAAAAAAAAA== sPgAUICIsMgAAAAAAAAAAA== +PgAiNj4+OhQ+CBAgLD4+A== 4PgAWKDY0AAAQDCA2Chw+A== sPgAGDhwwLAAcIiYyGBoAA== +PgAcKDA4PgA+AAAsPj4+A== 4PgAcKDA4BAA+ADIAABYoA== sPgAcKDA4FgA+AAAAAAAAA== +PgA+Pj4uPgA+AAA6PD4+A== 4PgAeMD4KIgA+ADIGEB4wA== sPgAAAAAAAAA+AAAaKjI8A== +PgAQGiIuPgA+AAAAIjI+A== 4PgAQGiIKIgA+ADI4Pj4+A== sPgA2Nj4AAAA+AAAADgAmA== +PgAiLj4uPgAAAAAAAAAAA== 4PgAAAAAKIgAAAAAAAAAAA== sPgAAAAAAAAAAAAAAAAAAA== +PgAAAAAuPgAAAAAAAAAAA== 4PgAeLj4KIgAAAAAAAAAAA== sPgAAAAAAAAAAAAAAAAAAA== +PgAKEhomMAAAAAAAAAAAA== 4PgAMFBokMAAAAAAAAAAAA== sPgASFhYQHgAAAAAAAAAAA== +P8A6PjwYGBoOPjQAAAAAA== 4P8AWNj4+MhgKIgYAAAAAA== sP8AUKgo+Pj40OAgAAAAAA==