

<!DOCTYPE html>
<html>
<head lang="de">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Super Scratch</title>
</head>
<body>
<canvas id="Spiel" width="640" height="480"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("Spiel");
var ctx = canvas.getContext("2d");
var spiel = {
timer: null,
beendet: false,
steuerung: {
links: false,
rechts: false,
hoch: false,
runter: false,
mapping: {
65: "links",
68: "rechts",
87: "hoch",
83: "runter"
},
buttonPress: function(keyInfo) {
this[this.mapping[keyInfo.keyCode]] = true;
spiel.sounds.hintergrundmusik();
},
buttonRelease: function(keyInfo) {
this[this.mapping[keyInfo.keyCode]] = false;
},
connect: function() {
window.addEventListener("keydown", function(keyInfo) {
spiel.steuerung.buttonPress(event);
}, false);
window.addEventListener("keyup", function(keyInfo) {
spiel.steuerung.buttonRelease(event);
}, false);
}
},
sounds: {
aktiviert: true,
springe: function() {
new Audio("sounds/meow.wav").play();
},
hintergrundmusik: function() {
if (this.aktiviert) {
new Audio("sounds/background.mp3").play();
this.aktiviert = false;
}
},
},
schleife: function() {
if (this.beendet) {
return;
}
welt.tick();
spieler.tick();
welt.zeichne();
spieler.zeichne();
this.timer = window.setTimeout("spiel.schleife()", 1000 / 60);
},
start: function() {
this.steuerung.connect();
this.schleife();
},
stopp: function(grund) {
this.beendet = true;
window.clearTimeout(this.timer);
alert(grund == "gewonnen" ? "Du hast gewonnen!" : "Du hast verloren!");
}
};
var welt = {
höhe: 480,
breite: 640,
schwerkraft: 10,
strecke: 0,
level: null,
kollisionskarte: null,
tickZähler: 0,
feinde: [],
ladeLevel: function() {
this.level = new Image();
this.level.src = "level.png";
var kollisionskarteBild = new Image();
kollisionskarteBild.onload = function(loadEvent) {
var verborgenesCanvas = document.createElement("CANVAS");
verborgenesCanvas.setAttribute("width", this.width);
verborgenesCanvas.setAttribute("height", this.height);
welt.kollisionskarte = verborgenesCanvas.getContext("2d");
welt.kollisionskarte.drawImage(this, 0, 0);
};
kollisionskarteBild.src = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAH0AAAAHgCAMAAAAf0qu7AAAABGdBTUEAALGPC/xhBQAAAwBQTFRFAAAATP8A0QAA3QAA3QwM0RYW3RcX/wAA/w0N/xoa////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkHiWMAAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAEefSURBVHhe7dnLerQ6EKbZqj5X3/8Fdw/e/9kekDZhcIqEtcb6cCBCgrT+x/8LAAAAAAAAAHfzP+ccoAMAAAAAAABwPx2KTzhABwAAAAAAAOB+OhSfcIAOAAAAAAAAwP10KD7hAB0AAAAAAACA++lQfMIBOgAAAAAAAAD306H4hAN0AAAAAAAAAO6nQ/EJB+gAAAAAAAAA3E+H4hMO0AEAAAAAAAC4nw7FJxygAwAAAAAAAHA/HYpPOEAHAAAAAAAA4H46FJ9wgA4AAAAAAADA/XQoPuEAHQAAAAAAAID76VB8wgE6AAAAAAAAAPfTofiEA3QAAAAAAAAA7qdD8QkH6AAAAAAAAADcT4fiEw7QAQAAAAAAALifDsUnHKADAAAAAAAAcD8dik84QAcAAAAAAADgfjoUn3CADgAAAAAAAMD9dCg+4QAdAAAAAAAAgPvpUHzCAToAAAAAAAAA99Oh+IQDdAAAAAAAAADup0PxCQfoAAAAAAAAANxPh+ITDtABAAAAAAAAuJ8OxSccoAMAAAAAAABwPx2KTzhABwAAAAAAAOB+OhSfcIAOAAAAAAAAwP10KD7hAB0AAAAAAACA++lQfMIBOgAAAAAAAAD306H4hAN0AAAAAAAAAO6nQ/EJB+gAAAAAAAAA3E+H4hMO0AEAAAAAAAC4nw7FJxygAwAAAAAAAHA/HYpPOEAHAAAAAAAA4H46FJ9wgA4AAAAAAADA/XQoPuEAHQAAAAAAAID76VB8wgE6AAAAAAAAAPfTofiEA3QAAAAAAAAA7qdD8QkH6AAAAAAAAADcT4fiEw7QAQAAAAAAALifDsUnHKADAAAAAAAAcD8dik84QAcAAAAAAADgfjoUn3CADgAAAAAAAMD9dCg+4QAdAAAAAAAAgPvpUHzCAToAAAAAAAAA99Oh+IQDdAAAAAAAAADup0PxCQfoAAAAAAAAANxPh+ITDtABAAAAAAAAuJ8OxSccoAMAAAAAAABwPx2KTzhABwAAAAAAAOB+OhSfcIAOAAAAAAAAwP10KD7hAB0AAAAAAACA++lQfMIBOgAAAAAAAAD306H4hAN0AAAAAAAAAO6nQ/EJB+gAAAAAAAAA3E+H4hMO0AEAAAAAAAC4nw7FJxygAwAAAAAAAHA/HYpPOEAHAAAAAAAA4H46FJ9wgA4AAAAAAADA/XQoPuEAHQAAAAAAAID76VB8wgE6AAAAAAAAAPfTofiEA3QAAAAAAAAA7qdD8QkH6AAAAAAAAADcT4fiEw7QAQAAAAAAALifDsUnHKADAAAAAAAAcD8dik84QAcAAAAAAADgfjoUn3CADgAAAAAAAMD9dCg+4QAdAAAAAAAAgPvpUHzCAToAAAAAAAAA99Oh+IQDdAAAAAAAAADup0PxCQfoAAAAAAAAANxPh+ITDtABAAAAAAAAuJ8OxSccoAMAAAAAAABwPx2KTzhABwAAAAAAAOB+OhSfcIAOAAAAAAAAwP10KD7hAB0AAAAAAACA++lQfMIBOgAAAAAAAAD306H4hAN0AAAAAAAAAO6nQ/EJB+gAAAAAAAAA3E+H4hMO0AEAAAAAAAC4nw7FJxygAwAAAAAAAHA/HYpPOEAHAAAAAAAA4H46FJ9wgA4AAAAAAADA/XQoPuEAHQAAAAAAAID76VB8wgE6AAAAAAAAAPfTofiEA3QAAAAAAAAA7qdD8QkH6AAAAAAAAADcT4fiEw7QAQAAAAAAALifDsUnHKADAAAAAAAAcD8dik84QAcAAAAAAADgfjoUn3CADgAAAAAAAMD9dCg+4QAdAAAAAAAAgPvpUHzCAToAAAAAAAAA99Oh+IQDdAAAAAAAAADup0PxCQfoAAAAAAAAANxPh+ITDtABAAAAAAAAuJ8OxSccoAMAAAAAAABwPx2KTzhABwAAAAAAAOB+OhSfcIAOAAAAAAAAwP10KD7hAB0AAAAAAACA++lQfMIBOgAAAAAAAAD306H4hAN0AAAAAAAAAO6nQ/EJB+gAAAAAAAAA3E+H4hMO0AEAAAAAAAC4nw7FJxygAwAAAAAAAHA/HYpPOEAHAAAAAAAA/sD/+JXCXEIP5SRd9H06FJ/QgAAAAEf0A3CmLAAAANxaP4OHCnMJPZSTdNFTdenzdF0AAAB+o99WM2UBAADg1voZPFSYS+ihnKSLnqpLn6frAgAA8Bv9tpopCwAAALfWz+ChwlxCD+UkXfRUXfo8XRcAAIDf6LfVTFkAAAC4tX4GDxXmEnooJ+mip+rS5+m6AAAA/Ea/rWbKAgAAwK31M3ioMJfQQzlJFz1Vlz5P1wUAAOA3+m01UxYAAABurZ/BQ4W5hB7KSbroqbr0ebouAAAAv9Fvq5myAAAAcGv9DB4qzCX0UE7SRU/Vpc/TdQEAAPiNflvNlAUAAIBb62fwUGEuoYdyki56qi59nq4LAADAb/TbaqYsAAAA3Fo/g4cKcwk9lJN00VN16fN0XQAAAH6j31YzZQEAAODW+hk8VJhL6KGcpIueqkufp+sCAADwG/22mikLAAAAt9bP4KHCXEIP5SRd9FRd+jxdFwAAgN/ot9VMWQAAALi1fgYPFeYSeign6aKn6tLn6boAAAD8Rr+tZsoCAADArfUzeKgwl9BDOUkXPVWXPk/XBQAA4Df6bTVTFgAAAG6tn8FDhbmEHspJuuipuvR5ui4AAAC/0W+rmbIAAABwa/0MHirMJfRQTtJFT9Wlz9N1AQAA+I1+W82UBQAAgFvrZ/BQYS6hh3KSLnqqLn2ergsAAMBv9NtqpiwAAADcWj+DhwpzCT2Uk3TRU3Xp83RdAAAAfqPfVjNlAQAA4Nb6GTxUmEvooZyki56qS5+n6wIAAPAb/baaKQsAAAC31s/gocKwS21znq4LAADAb/TbaqYsAAAA3Fo/g4cKwy61zXm6LgAAAL/Rb6uZsgAAAHBr/QweKgy71Dbn6boAAAD8Rr+tZsoCAADArfUzeKgw7FLbnKfrAgAA8Bv9tpopCwAAALfWz+ChwrBLbXOergsAAMBv9NtqpiwAAADcWj+DhwrDLrXNebouAAAAv9Fvq5myAAAAcGv9DB4qDLvUNufpugAAAPxGv61mygIAAMAN9GP3NF0WdqltztN1AQAA+I1+W82UBQAAgBvox+5puiwcVkvNlAUAAAAAAAAY69jxNF0WDqulZsoCAAAAAAAAjHXseJouC4fVUjNlAQAAAAAAAMY6djxNl4XDaqmZsgAAAAAAAABjHTuepsvCYbXUTFkAAAAAAACAsY4dT9Nl4bBaaqYsAAAAAAAAwFjHjqfpsnBYLTVTFgAAAAAAAGCsY8fTdFk4rJaaKQsAAAAAAAAw1rHjabosHFZLzZQFAAAAAAAAGOvY8TRdFg6rpWbKAgAAAAAAAIx17HiaLguH1VIzZQEAAAAAAADGOnY8TZeFw2qpmbIAAAAAAAAAYx07nqbLwmG11ExZAAAAAAAAgLGOHU/TZeGwWmqmLAAAAAAAAMBYx46n6bJwWC01UxYAAAAAAABgrGPH03RZOKyWmikLAAAAAAAAMNax42m6LBxWS82UBQAAAAAAABjr2PE0XRYOq6VmygIAAAAAAACMdex4mi4Lh9VSM2UBAAAAAAAAxjp2PE2XhcNqqZmyAAAAAAAAAGMdO56my8JhtdRMWQAAAAAAAICxjh1P02XhsFpqpiwAAAAAAADAWMeOp+mycFgtNVMWAAAAAAAAYKxjx9N0WTislpopCwAAAAAAADDWseNpuiwcVkvNlAUAAAAAAAAY69jxNF0WDqulZsoCAAAAAAAAjHXseJouC4fVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAAF7ocPEN+oNwWC01UxYAAAAAAADghQ4X36A/CIfVUjNlAQAAAAAAgEfrAHGxioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZsgAAB/VxcVmVCQAAAAC80L/SFqsYOKyWmikLAHBQHxeXVZkAAAAAwAv9K22xioHDaqmZssBarcgtjQC4vLaty6rMx+i2NzQA2NAyuazKBAAAgEP6mXlZlQmH1VIzZYG1WpFbGgEAI71GNjQA2NAyuazKBDhf+8yGBgDYKQDupB38sioTDqulZsoCa7UitzQCAEZ6jWxoALChZXJZlQlwvvaZDQ0AsFMA3Ek7+GVVJhxWS82UBdZqRW5pBACM9BrZ0ABgQ8vksioT4HztMxsaAGCnALiTdvDLqkw4rJaaKQus1Yrc0ggAGOk1sqEBwIaWyWVVJsD52mc2NADATgFwJ+3gl1WZcFgtNVMWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMuGwWmqmLLBWK3JLIwBgpNfIhgYAG1oml1WZAOdrn9nQAAA7BcCdtINfVmXCYbXUTFlgrVbklkYAwEivkQ0NADa0TC6rMgHO1z6zoQEAdgqAO2kHv6zKhMNqqZmywFqtyC2NAICRXiMbGgBsaJlcVmUCnK99ZkMDAOwUAHfSDn5ZlQmH1VIzZYG1WpFbGgEAI71GNjQA2NAyuazKBDhf+8yGBgDYKQDupB38sioTDqulZsoCa7UitzQCAEZ6jWxoALChZXJZlQlwvvaZDQ0AsFMA3Ek7+GVVJhxWS82UBdZqRW5pBACM9BrZ0ABgQ8vksioT4HztMxsaAGCnALiTdvDLqkw4rJaaKQus1Yrc0ggAGOk1sqEBwIaWyWVVJsD52mc2NADATgFwJ+3gl1WZcFgtNVMWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURADDSa2RDA4ANLZPLqkyA87XPbGgAgJ0C4E7awS+rMp+kOz9JF+WXE1sWWKsVuaURAO/T/jNUmKvouWxoALChZXJZlQlwvvaZDQ2Av1OvDRTk3Zr/DQ0A4HO0g19WZT5Jd36SLsovJ7YsADxFb8C1quWqqnKoMAAAH6hPug0N4Leax5Wq5Lqqc6Ag79b8b2gAwPnaZ87SVbnEN8q3KvNJuvOTdFF+ObFlAeApegOuVS1XVZVDhQEAgP/0tbxSlVxXdQ4UBOAB2vrP0lWfo/v+QN3Ak3TnJ+mi/HJiywLAU/QGXKtarqoqhwoDAAD/6Wt5pSq5ruocKAjAA7T1n6WrPkf3/YG6gSfpzk/SRfnlxJYFgKfoDbhWtVxVVQ4VBgAA/tPX8kpVcl3VOVAQgAdo6z9LV32O7vsDdQNP0p2fpIvyy4ktCwBP0RtwrWq5qqocKgwAAPynr+WVquS6qnOgIAAP0NZ/lq76HN33B+oGnqQ7P0kX5ZcTWxYAnqI34FrVclVVOVQYAAD4T1/LK1XJdVXnQEEAHqCt/yxd9Tm67w/UDcBhtdRMWQB4it6Aa1XLVVXlUGEAAOA/fS2vVCXXVZ0DBQF4gLb+s3TV5+i+P1A3AIfVUjNlAeApegOuVS1XVZVDhQEAgP/0tbxSlVxXdQ4UBOAB2vrP0lWfo/v+QN0AHFZLzZQFgKfoDbhWtVxVVQ4VBgAA/tPX8kpVcl3VOVAQgAdo6z9LV32O7vsDdQNwWC01UxYAnqI34FrVclVVOVQYAAD4T1/LK1XJdVXnQEEAHqCt/yxd9Tm67w/UDcBhtdRMWQB4it6Aa1XLVVXlUGEAAOA/fS2vVCXXVZ0DBQF4gLb+s3TV5+i+P1A3AIfVUjNlAeApegOuVS1XVZVDhQEAgP/0tbxSlVxXdQ4UBOAB2vrP0lWfo/v+QN0AHFZLzZQFgKfoDbhWtVxVVQ4VBgAA/tPX8kpVcl3VOVAQgAdo6z9LV32O7vsDdQNwWC01UxYAnqI34FrVclVVOVQYAAD4T1/LK1XJdVXnQEEAHqCt/yxd9Tm67w/UDcBhtdRMWQB4it6Aa1XLVVXlUGEAAOA/fS2vVCXXVZ0DBQF4gLb+s3TV5+i+P1A3AIfVUjNlAeApegOuVS1XVZVDhQEAgP/0tbxSlVxXdQ4UBOAB2vrP0lWfo/v+QN0AHFZLzZQFgKfoDbhWtVxVVQ4VBgAA/tPX8kpVcl3VOVAQgAdo6z9LV32O7vsDdQNwWC01UxYAnqI34FrVclVVOVQYAAD4T1/LK1XJdVXnQEEAHqCt/yxd9Tm67w/UDcBhtdRMWQB4it6Aa1XLVVXlUGEAAOA/fS2vVCXXVZ0DBQF4gLb+s3TV5+i+P1A3AIfVUjNlAeApegOuVS1XVZVDhQEAgP/0tbxSlVxXdQ4UBOAB2vrP0lWfo/v+QN0AHFZLzZQFgKfoDbhWtVxVVQ4VBgAA/tPX8kpVcl3VOVAQgAdo6z9LV32O7vsDdQNwWC01UxYAnqI34FrVclVVOVQYAAD4T1/LK1XJdVXnQEEAHqCt/yxd9Tm67w/UDcBhtdRMWQB4it6Aa1XLVVXlUGEAAOA/fS2vVCXXVZ0DBQF4gLb+s3TV5+i+P1A3AIfVUjNlAeApegOuVS1XVZVDhQEAgP/0tbxSlVxXdQ4UBOAB2vrP0lWfo/v+QN0AHFZLzZQFgKfoDbhWtVxVVQ4VBgAA/tPX8kpVcl3VOVAQgAdo6z9LV32O7vsDdQNwWC01UxYAnqI34FrVclVVOVQYAAD4T1/LK1XJdVXnQEEAHqCt/yxd9Tm67w/UDcBhtdRMWQB4it6Aa1XLVVXlUGEAAOA/fS2vVCXXVZ0DBQF4gLb+s3TV5+i+P1A3AIfVUjNlAQD+6SthqDAAAMBEvygGCgIAwA/6gJwpCwDwT18JQ4UBAAAm+kUxUBAAAH7QB+RMWQCAf/pKGCoMAAAw0S+KgYIAAPCDPiBnygIA/NNXwlBhAACAiX5RDBQEAIAf9AE5UxYA4J++EoYKAwAATPSLYqAgAAD8oA/ImbIAAP/0lTBUGAAAYKJfFAMFAQDgB31AzpQFAPinr4ShwgAAABP9ohgoCAAAP+gDcqYsAMA/fSUMFQYAAJjoF8VAQQAA+EEfkDNlAQD+6SthqDAAAMBEvygGCgIAwA/6gJwpCwDwT18JQ4UBAAAm+kUxUBAAAH7QB+RMWQCAf/pKGCoMAAAw0S+KgYIAAPCDPiBnygIA/NNXwlBhAACAiX5RDBQEAIAf9AE5UxYA4J++EoYKAwAATPSLYqAgAAD8oA/ImbIAAP/0lTBUGAAAYKJfFAMFAQDgB31AzpQFAPinr4ShwgAAABP9ohgoCAAAP+gDcqYsAMA/fSUMFQYAAJjoF8VAQQAA+EEfkDNlAQD+6SthqDAAAMBEvygGCgIAwA/6gJwpCwDwT18JQ4UBAAAm+kUxUBAAAH7QB+RMWQCAf/pKGCoMAAAw0S+KgYIAAPCDPiBnygIA/NNXwlBhAACAiX5RDBQEAIAf9AE5UxYA4J++EoYKAwAATPSLYqAgAAD8oA/ImbIAAP/0lTBUGAAAYKJfFAMFAQDgB31AzpQFAPinr4ShwgAAABP9ohgoCAAAP+gDcqYsAMA/fSUMFQYAAJjoF8VAQQAA+EEfkDNlAQD+6SthqDAAAMBEvygGCgIAwA/6gJwpCwDwT18JQ4UBAAAm+kUxUBAAAH7QB+RM2bWqZUsjuL6e2IYGwFF11JZGACdpaQ0VhqupQzc0AIBbaHPf0ADgslqsAwXnym9oABxWS21oAMAvtZk8RXcNh9VSM2XXqpYtjeD6emIbGgBH1VFbGgGcpKU1VBiupg7d0AAAW8Ut9MQ2NAC4rBbrQMG58hsaAIfVUhsaAPBLbSZP0V3DYbXUTNm1qmVLI7i+ntiGBsBRddSWRgAnaWkNFYarqUM3NADAVnELPbENDQAuq8U6UHCu/IYGwGG11IYGAPxSm8lTdNdwWC01U3atatnSCK6vJ7ahAXBUHbWlEcBJWlpDheFq6tANDQCwVdxCT2xDA4DLarEOFJwrv6EBcFgttaEBAL/UZvIU3TUcVkvNlF2rWrY0guvriW1oABxVR21pBHCSltZQYbiaOnRDAwBsFbfQE9vQAOCyWqwDBefKb2gAHFZLbWgAwC+1mTxFdw2H1VIzZdeqli2N4Pp6YhsaAEfVUVsaAZykpTVUGK6mDt3QAABbxS30xDY0ALisFutAwbnyGxoAh9VSGxoA8EttJk/RXcNhtdRM2bWqZUsjuL6e2IYGwFF11JZGACdpaQ0VhqupQzc0AMBWcQs9sQ0NAC6rxTpQcK78hgbAYbXUhgYA/FKbyVN013BYLTVTdq1q2dIIrq8ntqEBcFQdtaURwElaWkOF4Wrq0A0NALBV3EJPbEMDgMtqsQ4UnCu/oQFwWC21oQEAv9Rm8hTdNRxWS82UXatatjSC6+uJbWgAHFVHbWkEcJKW1lBhuJo6dEMDAGwVt9AT29AA4LJarAMF58pvaAAcVkttaADAL7WZPEV3DYfVUjNl16qWLY3g+npiGxoAR9VRWxoBnKSlNVQYrqYO3dAAAFvFLfTENjQAuKwW60DBufIbGgCH1VIbGgDwS20mT9Fdw2G11EzZtaplSyO4vp7YhgbAUXXUlkYAJ2lpDRWGq6lDNzQAwFZxCz2xDQ0ALqvFOlBwrvyGBsBhtdSGBgD8UpvJU3TXcFgtNVN2rWrZ0giurye2oQFwVB21pRHASVpaQ4XhaurQDQ0AsFXcQk9sQwOAy2qxDhScK7+hAXBYLbWhAQC/1GbyFN01HFZLzZRdq1q2NILr64ltaAAcVUdtaQRwkpbWUGG4mjp0QwMAbBW30BPb0ADgslqsAwXnym9oABxWS21oAMAvtZk8RXcNh9VSM2XXqpYtjeD6emIbGgBH1VFbGgGcpKU1VBiupg7d0AAAW8Ut9MQ2NAC4rBbrQMG58hsaAIfVUhsaAPBLbSZP0V3DYbXUTNm1qmVLI7i+ntiGBsBRddSWRgAnaWkNFYarqUM3NADAVnELPbENDQAuq8U6UHCu/IYGwGG11IYGAPxSm8lTdNdwWC01U3atatnSCK6vJ7ahAXBUHbWlEcBJWlpDheFq6tANDQCwVdxCT2xDA4DLarEOFJwrv6EBcFgttaEBAL/UZvIU3TUcVkvNlF2rWrY0guvriW1oABxVR21pBHCSltZQYbiaOnRDAwBsFbfQE9vQAOCyWqwDBefKb2gAHFZLbWgAwC+1mTxFdw2H1VIzZdeqli2N4Pp6YhsaAEfVUVsaAZykpTVUGK6mDt3QAABbxS30xDY0ALisFutAwbnyGxoAh9VSGxoA8EttJk/RXcNhtdRM2bWqZUsjuL6e2IYGwFF11JZGACdpaQ0VhqupQzc0AMBWcQs9sQ0NAC6rxTpQcK78hgbAYbXUhgYA/FKbyVN013BYLTVTdq1q2dIIrq8ntqEBcFQdtaURwElaWkOF4Wrq0A0NALBV3EJPbEMDgMtqsQ4UnCu/oQFwWC21oQEAv9Rm8hTdNRxWS82UXatatjSC6+uJbWgAHFVHbWkEcJKW1lBhuJo6dEMDAGwVt9AT29AA4LJarAMF58pvaAAcVkttaADAL7WZPEV3DYfVUjNl16qWLY3g+npiGxoAR9VRWxoBnKSlNVQYrqYO3dAAAFvFLfTENjQAuKwW60DBufIbGgCH1VIbGgDwS20mT9Fdw2G11EzZtaplSyO4vp7YhgbAUXXUlkYAJ2lpDRWGq6lDNzQAwFZxCz2xDQ0ALqvFOlBwrvyGBsBhtdSGBgD8UpvJU3TXcFgtNVN2rWrZ0giurye2oQFwVB21pRHASVpaQ4XhaurQDQ0AsFXcQk9sQwOAy2qxDhScK7+hAXBYLbWhAQC/1GbyFN01HFZLzZRdq1q2NILr64ltaAAcVUdtaQRwkpbWUGG4mjp0QwMAbBW30BPb0ADgslqsAwXnym9oABxWS21oAMAvtZk8RXcNh9VSM2XXqpYtjeD6emIbGgBH1VFbGgGcpKU1VBiupg7d0AAAW8Ut9MQ2NAC4rBbrQMG58hsaAIfVUhsaAPCNNgxsmpynlpopC0fVURsaAMDHaAMfKsw7Nfdn6ap3091taACAreIWemIbGgBcVot1oOBc+Q0NgMNqqQ0NAPhGGwY2Tc5TS82UBQD4p6+EocJDhbc0gm80VWfpqnATNTYW9y7N1YYGAPB32nEHCgLA3fSmw9ue89RSM2UBAP7pK2Go8FDhLY3gG03VWboq3ESNjcUNwNX1whooCAB305sOb3vOU0vNlAUA+KevhKHCQ4W3NIJvNFVn6apwEzU2FjcAV9cLa6AgANxNbzq87TlPLTVTFgDgn74ShgoPFd7SCL7RVJ2lq8JN1NhY3ABcXS+sgYIAcDe96fC25zy11ExZAIB/+koYKjxUeEsj+EZTdZauCjdRY2NxA3B1vbAGCgLA3fSmw9ue89RSM2UBAP7pK2Go8FDhLY3gG03VWboq3ESNjcUNwNX1whooCAB305sOb3vOU0vNlAUA+KevhKHCQ4W3NIJvNFVn6apwEzU2FjcAV9cLa6AgANxNbzq87TlPLTVTFgDgn74ShgoPFd7SCL7RVJ2lq8JN1NhY3ABcXS+sgYIAcDe96fC25zy11ExZAIB/+koYKjxUeEsj+EZTdZauCjdRY2NxA3B1vbAGCgLA3fSmw9ue89RSM2UBAP7pK2Go8FDhLY3gG03VWboq3ESNjcUNwNX1whooCAB305sOb3vOU0vNlAUA+KevhKHCQ4W3NIJvNFVn6apwEzU2FjcAV9cLa6AgANxNbzq87TlPLTVTFgDgn74ShgoPFd7SCL7RVJ2lq8JN1NhY3ABcXS+sgYIAcDe96fC25zy11ExZAIB/+koYKjxUeEsj+EZTdZauCjdRY2NxA3B1vbAGCgLA3fSmw9ue89RSM2UBAP7pK2Go8FDhLY3gG03VWboq3ESNjcUNwNX1whooCAB305sOb3vOU0vNlAUA+KevhKHCQ4W3NIJvNFVn6apwEzU2FjcAV9cLa6AgANxNbzq87TlPLTVTFgDgn74ShgoPFd7SCL7RVJ2lq8JN1NhY3ABcXS+sgYIAcDe96fC25zy11ExZAIB/+koYKjxUeEsj+EZTdZauCjdRY2NxA3B1vbAGCgLA3fSmw9ue89RSM2UBAP7pK2Go8FDhLY3gG03VWboq3ESNjcUNwNX1whooCAB305sOb3vOU0vNlAUA+KevhKHCQ4W3NIJvNFVn6apwEzU2FjcAV9cLa6AgANxNbzq87TlPLTVTFgDgn74ShgoPFd7SCL7RVJ2lq8JN1NhY3ABcXS+sgYIAcDe96fC25zy11ExZAIB/+koYKjxUeEsj+EZTdZauCjdRY2NxA3B1vbAGCgLA3fSmw9ue89RSM2UBAP7pK2Go8FDhLY3gG03VWboq3ESNjcUNwNX1whooCAB305sOb3vOU0vNlAUA+KevhKHCQ4W3NIJvNFVn6apwEzU2FjcAV9cLa6AgANxNbzq87TlPLTVTFgDgn74ShgoPFd7SCL7RVJ2lq8JN1NhY3ABcXS+sgYIAcDe96fC25zy11ExZADhH7xceqBYYKrylEXyjqTpLV4WbqLGxuAG4ul5YAwUB4G560+Ftz3lqqZmyAHCO3i88UC0wVHhLI/hGU3WWrgo3UWNjcQNwdb2wBgoCwN30psPbnvPUUjNlAeAcvV94oFpgqPCWRvCNpuosXRVuosbG4gZ2accYKQpH1VEDBXmzpn+qNEC7wpVV6dM1G4tVDBxWS82UBYBz9H7hgWqBocJbGgEAwN/rC2ykKBxVRw0U5M2a/qnSAO0KV1alT9dsLFYxcFgtNVMWWKsVOVMWrqX+5IFqAQAAPlCfdCNF4ag6aqAgb9b0T5UGaFe4sip9umZjsYqBw2qpmbLAWq3ImbJwLfUnD1QLAADwgfqkGykKR9VRAwV5s6Z/qjRAu8KVVenTNRuLVQwcVkvNlAXWakXOlIVrqT95oFoAAIAP1CfdSFE4qo4aKMibNf1TpQHaFa6sSp+u2VisYuCwWmqmLLBWK3KmLFxL/ckD1QIAAHygPulGisJRddRAQd6s6Z8qDdCucGVV+nTNxmIVA4fVUjNlgbVakTNl4VrqTx6oFgAA4AP1STdSFI6qowYK8mZN/1RpgHaFK6vSp2s2FqsYOKyWmikLrNWKnCkL11J/8kC1AAAAH6hPupGicFQdNVCQN2v6p0oDtCtcWZU+XbOxWMXAYbXUTFlgrVbkTFm4lvqTB6oFAAD4QH3SjRSFo+qogYK8WdM/VRqgXeHKqvTpmo3FKgYOq6VmygJrtSJnysK11J88UC0AAMAH6pNupCgcVUcNFOTNmv6p0gDtCldWpU/XbCxWMXBYLTVTFlirFTlTFq6l/uSBagEAAD5Qn3QjReGoOmqgIG/W9E+VBmhXuLIqfbpmY7GKgcNqqZmywFqtyJmycC31Jw9UCwAA8IH6pBspCkfVUQMFebOmf6o0QLvClVXp0zUbi1UMHFZLzZQF1mpFzpSFa6k/eaBaAACAD9Qn3UhROKqOGijImzX9U6UB2hWurEqfrtlYrGLgsFpqpiywVitypixcS/3JA9UCAAB8oD7pRorCUXXUQEHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZYG1WpEzZeFa6k8eqBYAAOAD9Uk3UnSd6uCBagHerOmfKg3QrnBlVfp0zcZiFQOH1VIzZTc0YKw4MNH6mSkL11J/8kC1AAAAH6hPupGi61QHD1QL8GZN/1RpgHaFK6vSp2s2FqsYOKyWmim7oQFjxYGJ1s9MWbiW+pMHqgVgn/pmoiQA8Ad63Y4UXac6eKBagDdr+qdKA7QrXFmVPl2zsVjFwGG11EzZDQ0YKw7vVw9OlV6rWmbKrlQlc+W5o54xD1QLwD71zURJ4EFa/hMlganW0EjRdaqDB6oFeLOmf6o0sFDLkR81YefomvxS0wiH1VIzZTc0YKw4vF89OFV6rWqZKbtSlcyV5456xjxQLQD71DcTJYEHaflPlASmWkMjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YObomv9Q0wmG11EzZDQ0YKw7vVw9OlV6rWmbKrlQlc+W5o54xD1QLwD71zURJ4EFa/hMlYZEacaLkcpUzUnSd6uCBaoEP1U2MFF2sYqZKL1UpQ4XhBmpqftSEnaNr8ktNIxxWS82U3dCAseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2Dm6Jr/UNMJhtdRM2Q0NGCsO71cPTpVeq1pmyq5UJXPluaOeMQ9UC8A+9c1ESeBBWv4TJWGRGnGi5HKVM1J0nerggWqBD9VNjBRdrGKmSi9VKUOF4QZqan7UhJ2ja/JLTSMcVkvNlN3QgLHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdg5uia/1DTCYbXUTNkNDRgrDu9XD06VXqtaZsquVCVz5bmjnjEPVAvAPvXNREngQVr+EyVhkRpxouRylTNSdJ3q4IFqgQ/VTYwUXaxipkovVSlDheEGamp+1ISdo2vyS00jHFZLzZTd0ICx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YObomv9Q0wmG11EzZDQ0YKw7vVw9OlV6rWmbKrlQlc+W5o54xD1QLwD71zURJ4EFa/hMlYZEacaLkcpUzUnSd6uCBaoEP1U2MFF2sYqZKL1UpQ4XhBmpqftSEnaNr8ktNIxxWS82U3dCAseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2Dm6Jr/UNMJhtdRM2Q0NGCsO71cPTpVeq1pmyq5UJXPluaOeMQ9UC8A+9c1ESeBBWv4TJWGRGnGi5HKVM1J0nerggWqBD9VNjBRdrGKmSi9VKUOF4QZqan7UhJ2ja/JLTSMcVkvNlN3QgLHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdg5uia/1DTCYbXUTNkNDRgrDu9XD06VXqtaZsquVCVz5bmjnjEPVAvAPvXNREngQVr+EyVhkRpxouRylTNSdJ3q4IFqgQ/VTYwUXaxipkovVSlDheEGamp+1ISdo2vyS00jHFZLzZTd0ICx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YObomv9Q0wmG11EzZDQ0YKw7vVw9OlV6rWmbKrlQlc+W5o54xD1QLwD71zURJ4EFa/hMlYZEacaLkcpUzUnSd6uCBaoEP1U2MFF2sYqZKL1UpQ4XhBmpqftSEnaNr8ktNIxxWS82U3dCAseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2Dm6Jr/UNMJhtdRM2Q0NGCsO71cPTpVeq1pmyq5UJXPluaOeMQ9UC8A+9c1ESeBBWv4TJWGRGnGi5HKVM1J0nerggWqBD9VNjBRdrGKmSi9VKUOF4QZqan7UhJ2ja/JLTSMcVkvNlN3QgLHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdg5uia/1DTCYbXUTNkNDRgrDu9XD06VXqtaZsquVCVz5bmjnjEPVAvAPvXNREngQVr+EyVhkRpxouRylTNSdJ3q4IFqgQ/VTYwUXaxipkovVSlDheEGamp+1ISdo2vyS00jHFZLzZTd0ICx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YObomv9Q0wmG11EzZDQ0YKw7vVw9OlV6rWmbKrlQlc+W5o54xD1QLwD71zURJ4EFa/hMlYZEacaLkcpUzUnSd6uCBaoEP1U2MFF2sYqZKL1UpQ4XhBmpqftSEnaNr8ktNIxxWS82U3dCAseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2Dm6Jr/UNMKf+J8/+KYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YObomv9Q0wp/onPylbxqwDh0rDu9XD06VXqtaZsquVCVz5bmjnjEPVAvAPvXNREngQVr+EyVhkRpxouRylTNSdJ3q4IFqgQ/VTYwUXaxipkovVSlDheEGamp+1ISdo2vyS00j/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdg5uia/1DTCn+ic/KVvGrAOHSsO71cPTpVeq1pmyq5UJXPluaOeMQ9UC8A+9c1ESeBBWv4TJWGRGnGi5HKVM1J0nerggWqBD9VNjBRdrGKmSi9VKUOF4QZqan7UhJ2ja/JLTSP8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV/6pgHr0LHi8H714FTptaplpuxKVTJXnjvqGfNAtQDsU99MlAQepOU/URIWqREnSi5XOSNF16kOHqgW+FDdxEjRxSpmqvRSlTJUGG6gpuZHTdh+5fgDTTH8ic7JX/qmAevQseLwfvXgVOm1qmWm7EpVMleeO+oZ80C1AOxT30yUBB6k5T9REhapESdKLlc5I0XXqQ4eqBb4UN3ESNHFKmaq9FKVMlQYbqCm5kdN2H7l+ANNMfyJzslf+qYB69Cx4vB+9eBU6bWqZabsSlUyV5476hnzQLUA7FPfTJQEHqTlP1ESFqkRJ0ouVzkjRdepDh6oFvhQ3cRI0cUqZqr0UpUyVBhuoKbmR03YfuX4A00x/InOyV+qDQEAGOuDa58yADfXprdfOQAA4Is+l0/RJflRE7ZfOf5AUwx/onPyl2pDAADG+uDapwzAzbXp7VcOAAD4os/lU3RJftSE7VeOm+ix8gCdk79USwAAMNYH1z5lAG6uTW+/cgAAwBd9Lp+iS/KjJmy/ctxEj5UH6Jz8pVoCAICxPrj2KQNwc216+5UDAAC+6HP5FF2SHzVh+5XjJnqsPEDn5C/VEgAAjPXBtU8ZgJtr09uvHAAA8EWfy6fokvyoCduvHDfRY+UBOid/qZYAAGCsD659ygDcXJvefuUAAIAv+lw+RZfkR03YfuW4iR4rD9A5+Uu1BAAAY31w7VMG4Oba9PYrBwAAfNHn8im6JD9qwvYrx030WHmAzslfqiUAABjrg2ufMgA316a3XzkAAOCLPpdP0SX50f/1v4bKcROtGB6gc/KXagkAAMb64NqnDMDNtentVw4AAPiiz+VTdEl+9H/8P0PluIlWDA/QOflLtQQAAGN9cO1TBuDm2vT2KwcAAHzR5/IpuiQ/+t//76Fy3EQrhgfonPylWgIAgLE+uPYpA3BzbXr7lQMAAL7oc/kUXZIfOUB/uFYMD9A5+Uu1BAAAY31w7VMG4Oba9PYrBwAAfNHn8im6JD9ygP5wrRgeoHPyl2oJAADG+uDapwzAzbXp7VcOAAD4os/lU3RJfuQA/eFaMTxA5+Qv1RIAAIz1wbVPGYCba9PbrxwAAPBFn8un6JL8yAH6w7VieIDOyV+qJQAAGOuDa58yADfXprdfOQAA4Is+l0/RJfmRA/SHa8XwAJ2Tv1RLAAAw1gfXPmUAbq5Nb79yAADAF30un6JL8iMH6A/XiuEBOid/qZYAAGCsD659ygDcXJvefuUAAIAv+lw+RZfkRw7QH64VwwN0Tv5SLQEAwFgfXPuUAbi5Nr39ygEAAF/0uXyKLsmPHKA/XCuGB+ic/KVaAgCAsT649ikDcHNtevuVAwAAvuhz+RRdkh85QH+4VgwP0Dn5S7UEAABjfXDtUwbg5tr09isHAAB80efyKbokP3KA/nCtGB6gc/KXagkAAMb64NqnDMDNtentVw4AAPiiz+VTdEl+5AD94VoxPEDn5C/VEgAAjPXBtU8ZgJtr09uvHAAA8EWfy6fokvzIAfrDtWJ4gM7JX6olAAAY64NrnzIAN9emt185AADgiz6XT9El+ZED9IdrxfAAnZO/VEsAADDWB9c+ZQBurk1vv3IAAMAX/+f/Ok+X5EcO0B+uX6k8QOfkL9USAACM9cG1TxmAm2vT268cAADwxf/WCe0ZuiQ/coD+cP1K5QE6J3+plgAAYKwPrn3KANxcm95+5QAAgC8coK/gAP3h+pXKA3RO/lItAQDAWB9c+5QBuLk2vf3KAQAAXzhAX8EB+sP1K5UH6Jz8pVoCAICxPrj2KQNwc216+5UDAAC+cIC+ggN0AACAQzr72acMwM216e1XDgAA+MIB+goO0AEAAA7p7GefMgA31/+R9isHAAB84QB9BQfoAAAAh/RjaZ8yADfXprdfOQAA4AsH6Cs4QAcAADikH0v7lAG4uTa9/coBAABfOEBfwQE6AADAIf1Y2qcMwM216e1XDgAA+MIB+goO0AEAAA7px9I+ZQBurk1vv3IAAMAXDtBXcIAOAABwSD+W9ikDcHNtevuVAwAAvnCAvoIDdAAAgEP6sbRPGYCba9PbrxwAAPCFA/QVHKADAAAc0o+lfcoA3Fyb3n7lAACALxygr+AAHQAA4JB+LO1TBuDm2vT2KwcAAHzhAH0FB+gAAACH9GNpnzIAN9emt185AADgCwfoKzhABwAAOKQfS/uUAbi5Nr39ygEAAF84QF/BAToAAMAh/VjapwzAzbXp7VcOAAD4wgH6Cg7QAQAADunH0j5lAG6uTW+/cgAAwBcO0FdwgA4AAHBIP5b2KQNwc216+5UDAAC+cIC+ggN0AACAQ/qxtE8ZgJtr09uvHAAA8IUD9BUcoAMAABzSj6V9ygDcXJvefuUAAIAvHKCv4AAdAADgkH4s7VMG4Oba9PYrBwAAfOEAfQUH6AAAAIf0Y2mfMgA316a3XzkAAOALB+grOEAHAAA4pB9L+5QBuLk2vf3KAQAAXzhAX8EBOgAAwCH9WNqnDMDNtentVw4AAPjCAfoKDtABAAAO6cfSPmUAbq5Nb79yAADAFw7QV3CADgAAcEg/lvYpA3BzbXr7lQMAAL5wgL6CA3QAAIBD+rG0TxmAm2vT268cAADwhQP0FRygA/+///E//j93wd4BoBUW6AAAAABJRU5ErkJggg==";
},
istFesteOberfläche: function(x, y) {
return this.pixeltyp(x, y) == "#";
},
pixeltyp: function(x, y) {
if (!this.kollisionskarte) {
return ".";
}
var rohdaten = this.kollisionskarte.getImageData(x, y, 1, 1).data;
var maske = rohdaten[0] + " " + rohdaten[1] +
" " + rohdaten[2] + " " + rohdaten[3];
if (maske == "255 0 0 255") return "Grube";
if (maske == "76 255 0 255") return "Ausgang";
if (maske == "255 255 255 255") return ".";
if (maske == "0 0 0 255") return "#";
},
tick: function() {
if (!this.level) {
this.ladeLevel();
this.feinde.push(new Feind(500, 100));
this.feinde.push(new Feind(2000, 100));
this.feinde.push(new Feind(3700, 100));
this.feinde.push(new Feind(4000, 100));
this.feinde.push(new Feind(5600, 100));
this.feinde.push(new Feind(6500, 100));
this.feinde.push(new Feind(7600, 100));
}
this.strecke += spieler.figur.speed;
this.tickZähler++;
this.aktiviereFeinde();
},
aktiviereFeinde: function() {
for (var i = 0; i < this.feinde.length; i++) {
this.feinde[i].tick();
}
},
levelEndOffset: function() {
return this.level.width - this.breite;
},
atLevelEnd: function() {
return this.strecke >= this.levelEndOffset();
},
zeichne: function() {
var zeichneBeiX = this.strecke * -1;
zeichneBeiX = zeichneBeiX > 0 ? 0 : zeichneBeiX;
zeichneBeiX = this.atLevelEnd() ? this.levelEndOffset() * -1 : zeichneBeiX;
ctx.drawImage(this.level, zeichneBeiX, 0);
for (var i = 0; i < this.feinde.length; i++) {
this.feinde[i].zeichne();
}
}
};
var spieler = {
figur: new Figur(160, 390, 25, 25, new Animation("graphics/cat", 5), new Animation("graphics/cat.backwards", 5)),
tick: function() {
var currentLocation = welt.pixeltyp(this.figur.leadingEdge(), this.figur.y);
if (currentLocation == "Ausgang" || currentLocation == "Grube") {
var state = currentLocation == "Ausgang" ? "gewonnen" : "verloren";
spiel.stopp(state);
return;
}
this.verarbeiteSteuerung();
this.figur.tick();
},
verarbeiteSteuerung: function() {
if (spiel.steuerung.rechts) {
this.figur.speed = 5;
}
if (spiel.steuerung.links) {
this.figur.speed = -5;
}
if (!spiel.steuerung.links && !spiel.steuerung.rechts) {
this.figur.speed = 0;
}
if (spiel.steuerung.hoch && this.figur.standingOnAPlatform()) {
this.figur.downwardForce = -8;
spiel.sounds.springe();
}
},
zeichne: function() {
this.figur.zeichne();
}
};
function Figur(x, y, breite, höhe, laufendeFigur, umgedrehteFigur) {
this.x = x;
this.y = y;
this.höhe = höhe;
this.breite = breite;
this.speed = 0;
this.downwardForce = 0;
this.jumpHeight = 0;
this.laufendeFigur = laufendeFigur;
this.laufendeFigurReversed = umgedrehteFigur;
this.tick = function() {
this.applyGravity();
this.applyMovement();
}
this.applyGravity = function() {
if (this.isJumping()) {
this.jumpHeight += (this.downwardForce * -1);
if (this.jumpHeight >= this.höhe * 6) {
this.downwardForce = welt.schwerkraft;
this.jumpHeight = 0;
}
} else {
if (this.standingOnAPlatform()) {
this.downwardForce = 0;
} else {
this.downwardForce = welt.schwerkraft;
}
}
}
this.applyMovement = function() {
var nextX = this.x + this.speed;
var nextY = this.y + this.downwardForce;
var nextLeadingX = this.leadingEdge() + this.speed;
var walkingIntoSurface = welt.istFesteOberfläche(nextLeadingX, this.y);
if (this.isMoving() && walkingIntoSurface) {
nextX = this.x;
this.speed = 0;
}
var topLeftIsSolid = welt.istFesteOberfläche(this.leadingEdge(), this.y);
var topRightIsSolid = welt.istFesteOberfläche(this.trailingEdge(), this.y);
if ((topLeftIsSolid || topRightIsSolid) && this.isJumping()) {
this.downwardForce = welt.schwerkraft;
this.jumpHeight = 0;
}
this.x = nextX;
this.y = nextY;
}
this.bottom = function() {
return this.y + this.höhe;
}
this.isJumping = function() {
return this.downwardForce < 0;
}
this.isFalling = function() {
return this.downwardForce > 0;
}
this.isMoving = function() {
return this.speed != 0;
}
this.leadingEdge = function() {
return this.speed < 0 ? this.x : this.x + this.breite;
}
this.trailingEdge = function() {
return this.speed < 0 ? this.x + this.breite : this.x;
}
this.standingOnAPlatform = function() {
return welt.istFesteOberfläche(this.leadingEdge(), this.bottom() + 1) ||
welt.istFesteOberfläche(this.trailingEdge(), this.bottom() + 1);
}
this.zeichne = function() {
if (!this.laufendeFigur) {
return;
}
var zeichneBeiX = this.x - welt.strecke;
zeichneBeiX = zeichneBeiX > this.x ? this.x : zeichneBeiX;
if (welt.atLevelEnd()) {
zeichneBeiX = (welt.breite - (welt.level.width - welt.strecke - (this.x - welt.strecke)));
}
var sprite = this.speed < 0 ? this.laufendeFigurReversed : this.laufendeFigur;
if (this.isJumping() || this.isFalling()) {
sprite.drawFrame(4, zeichneBeiX, this.y, this.höhe, this.breite);
} else if (this.isMoving()) {
sprite.zeichne(welt.tickZähler, zeichneBeiX, this.y, this.höhe, this.breite);
} else {
sprite.drawFrame(1, zeichneBeiX, this.y, this.höhe, this.breite);
}
}
this.kollidiertMit = function(other) {
if (this.x >= other.x &&
this.x <= other.x + other.breite &&
this.y >= other.y &&
this.y <= other.y + other.höhe) {
return true;
}
return false;
}
}
function Animation(dateiname, frameZahl) {
this.frames = [];
this.currentFrameId = 1;
for (var frameId = 1; frameId <= frameZahl; frameId++) {
var frame = new Image();
frame.src = dateiname + "." + frameId + ".png";
this.frames[frameId] = frame;
}
this.zeichne = function(tickZähler, x, y, höhe, breite) {
if (tickZähler % 5 == 0) {
this.currentFrameId++;
}
this.currentFrameId = this.currentFrameId >= this.frames.length ? 1 : this.currentFrameId;
this.drawFrame(this.currentFrameId, x, y, höhe, breite);
}
this.drawFrame = function(frameNumber, x, y, höhe, breite) {
ctx.drawImage(this.frames[frameNumber], x, y, breite, höhe);
}
}
function Feind(x, y) {
this.figur = new Figur(x, y, 25, 25, new Animation("graphics/tiger", 5), new Animation("graphics/tiger.backwards", 5))
this.tick = function() {
var distanceFromPlayer = Math.abs(spieler.figur.x - this.figur.x);
if (distanceFromPlayer <= welt.breite * 2) {
this.figur.speed = 2;
if (spieler.figur.x < this.figur.x) {
this.figur.speed *= -1;
}
if (this.figur.kollidiertMit(spieler.figur)) {
spiel.stopp();
}
this.figur.tick();
}
}
this.zeichne = function() {
this.figur.zeichne();
}
}
spiel.start();
</script>
</body>
</html>
Illustrations © Duncan Beedie
All rights reserved.