Skip to content

Instantly share code, notes, and snippets.

@Kethku
Last active October 30, 2019 23:28
Show Gist options
  • Save Kethku/28ffa97d6a6a04a1d15bb191ed66322e to your computer and use it in GitHub Desktop.
Save Kethku/28ffa97d6a6a04a1d15bb191ed66322e to your computer and use it in GitHub Desktop.
SCRIPT-8
// title: 8Bomb
function mod(n, m) {
return ((n % m) + m) % m;
}
function length(vec) {
return Math.sqrt(vec.x * vec.x + vec.y * vec.y);
}
function add(vec1, vec2) {
return { x: vec1.x + vec2.x, y: vec1.y + vec2.y };
}
function subtract(vec1, vec2) {
return { x: vec1.x - vec2.x, y: vec1.y - vec2.y };
}
function distance(vec1, vec2) {
return length(subtract(vec1, vec2));
}
function multiply(vec, scalar) {
return { x: vec.x * scalar, y: vec.y * scalar };
}
function divide(vec, scalar) {
return { x: vec.x / scalar, y: vec.y / scalar };
}
function normalize(vec) {
let len = length(vec);
return { x: vec.x / len, y: vec.y / len };
}
function floor(vec) {
return { x: Math.floor(vec.x), y: Math.floor(vec.y) };
}
function ceil(vec) {
return { x: Math.ceil(vec.x), y: Math.ceil(vec.y) };
}
const zero = { x: 0, y: 0 };
function* InRectangle (topLeft, bottomRight, xJump = 1, yJump = 1) {
for (let y = topLeft.y; y < bottomRight.y; y += yJump) {
for (let x = topLeft.x; x < bottomRight.x; x += xJump) {
yield { x, y };
}
}
};
const wrappedOffsets = [
{ x: 0, y: 0 },
{ x: 128, y: 0 },
{ x: -128, y: 0 }
];
class EventManager0 {
constructor() {
this.currentId = 0;
this.subscriptions = {};
}
Subscribe(callback) {
this.subscriptions[this.currentId] = callback;
let id = this.currentId;
this.currentId++;
return id;
}
Unsubscribe(id) {
delete this.subscriptions[id];
}
Publish() {
for (let id in this.subscriptions) {
this.subscriptions[id]();
}
}
}
class EventManager1 {
constructor() {
this.currentId = 0;
this.subscriptions = {};
}
Subscribe(callback) {
this.subscriptions[this.currentId] = callback;
let id = this.currentId;
this.currentId++;
return id;
}
Unsubscribe(id) {
delete this.subscriptions[id];
}
Publish(arg) {
for (let id in this.subscriptions) {
this.subscriptions[id](arg);
}
}
}
class EventManager2 {
constructor() {
this.currentId = 0;
this.subscriptions = {};
}
Subscribe(callback) {
this.subscriptions[this.currentId] = callback;
let id = this.currentId;
this.currentId++;
return id;
}
Unsubscribe(id) {
delete this.subscriptions[id];
}
Publish(arg1, arg2) {
for (let id in this.subscriptions) {
this.subscriptions[id](arg1, arg2);
}
}
}
class PollManager1 {
constructor() {
this.currentId = 0;
this.subscriptions = { };
}
Subscribe(callback) {
this.subscriptions[this.currentId] = callback;
let id = this.currentId;
this.currentId++;
return id;
}
Unsubscribe(id) {
delete this.subscriptions[id];
}
Poll(arg) {
let result = [];
for (let id in this.subscriptions) {
result.push(this.subscriptions[id](arg));
}
return result;
}
}
const Reset = new EventManager1();
const Update = new EventManager2();
const DrawWorld = new EventManager1();
const DrawUI = new EventManager1();
const Started = new EventManager1();
const gravity = 0.06;
const groundFriction = 0.95;
const maxSpeed = 5;
const PhysicsObjects = new PollManager1();
function getPhysicsObjects(state) {
return PhysicsObjects.Poll(state).flat();
}
function createPhysicsObject(x, y, sprite, radius = 4) {
return {
previous: { x, y },
position: { x, y },
radius,
sprite,
grounded: false
};
}
const standardBorderPixels = [
{ x: -3.5, y: 0.5 },
{ x: -3.5, y: 1.5 },
{ x: -2.5, y: 2.5 },
{ x: -1.5, y: 3.5 },
{ x: -0.5, y: 3.5 },
{ x: 0.5, y: 3.5 },
{ x: 1.5, y: 3.5 },
{ x: 2.5, y: 2.5 },
{ x: 3.5, y: 1.5 },
{ x: 3.5, y: 0.5 },
{ x: 3.5, y: -0.5 },
{ x: 3.5, y: -1.5 },
{ x: 2.5, y: -2.5 },
{ x: 1.5, y: -3.5 },
{ x: 0.5, y: -3.5 },
{ x: -0.5, y: -3.5 },
{ x: -1.5, y: -3.5 },
{ x: -2.5, y: -2.5 },
{ x: -3.5, y: -1.5 },
{ x: -3.5, y: -0.5 },
];
function updateVelocities(physicsObjects) {
for (const obj of physicsObjects) {
let velocity = subtract(obj.position, obj.previous);
let speed = length(velocity);
if (speed > maxSpeed) {
velocity = divide(multiply(velocity, maxSpeed), speed);
} else if(obj.grounded) {
velocity = multiply(velocity, groundFriction);
}
obj.previous = obj.position;
velocity.y += gravity;
obj.position = add(obj.position, velocity);
if (obj.position.x < 0) {
obj.previous.x += 128;
obj.position.x += 128;
}
if (obj.position.x >= 128) {
obj.previous.x -= 128;
obj.position.x -= 128;
}
}
}
function resolveTerrainCollisions(state, physicsObjects) {
for (const obj of physicsObjects) {
let total = zero;
let count = 0;
for (let positionOffset of standardBorderPixels) {
let testPosition = floor(add(obj.position, floor(positionOffset)));
if (terrainAt(state, testPosition.x, testPosition.y)) {
if (positionOffset.y > 3) {
obj.grounded = true;
}
total = add(total, positionOffset);
count++;
}
}
if (count == 0) {
continue;
}
let collisionPosition = divide(total, count);
let collisionDistance = length(collisionPosition);
let collisionDirection = divide(collisionPosition, collisionDistance);
let displacement = obj.radius - collisionDistance;
obj.position = subtract(obj.position, multiply(collisionDirection, displacement * 0.3));
}
}
function resolveObjectCollisions(physicsObjects) {
for (const first of physicsObjects) {
for (const second of physicsObjects) {
if (first == second) continue;
for (let wrappedOffset of wrappedOffsets) {
let wrappedFirstPosition = add(first.position, wrappedOffset);
let offset = subtract(wrappedFirstPosition, second.position);
let distance = length(offset);
if (distance < first.radius + second.radius) {
if (offset.y > 0) second.grounded = true;
let amount = first.radius + second.radius - distance;
let direction = divide(offset, distance);
let correction = multiply(direction, amount / 2);
first.position = add(first.position, correction);
second.position = subtract(second.position, correction);
}
}
}
}
}
DrawWorld.Subscribe(state => {
let physicsObjects = getPhysicsObjects(state);
for (let obj of physicsObjects) {
sprite(obj.position.x - obj.radius, obj.position.y - obj.radius, obj.sprite);
if (obj.position.x < obj.radius) {
sprite(obj.position.x - obj.radius + 128, obj.position.y - obj.radius, obj.sprite);
}
if (obj.position.x + obj.radius >= 128) {
sprite(obj.position.x - obj.radius - 128, obj.position.y - obj.radius, obj.sprite);
}
}
});
Update.Subscribe(state => {
let physicsObjects = getPhysicsObjects(state);
updateVelocities(physicsObjects);
for (let object of physicsObjects) {
object.grounded = false;
}
for (let i = 0; i < 5; i++) {
resolveTerrainCollisions(state, physicsObjects);
}
resolveObjectCollisions(physicsObjects);
});
const panelHeight = 100;
const panelWidth = 128;
const terrainStart = 70;
Reset.Subscribe(state => {
state.highestPanel = 0;
state.lowestPanel = 0;
state.terrain = {};
});
function terrainAt({ terrain, lowestPanel }, x, y) {
if (y < terrainStart) return false;
let panelNumber = Math.floor(y / panelHeight);
let panel = terrain[panelNumber];
let panelY = y - (panelNumber * panelHeight);
if (panel && panelNumber != lowestPanel) {
return panel.data[panelY][mod(x, 128)];
}
return false;
}
function setTerrainAt({ terrain }, x, y, value) {
let panelNumber = Math.floor(y / panelHeight);
let panel = terrain[panelNumber];
if (panel) {
let panelY = y - (panelNumber * panelHeight);
let row = panel.data[panelY];
row[mod(x, 128)] = value;
}
}
function colorAt(state, x, y) {
let { terrain } = state;
let panelNumber = Math.floor(y / panelHeight);
let panel = terrain[panelNumber];
let panelY = y - (panelNumber * panelHeight);
if (!panel) return 7;
for (let stone of panel.stones) {
let dx = stone.x - x;
let dy = stone.y - panelY;
let distanceSquared = dx * dx + dy * dy;
if (distanceSquared < stone.r * stone.r) {
return stone.c;
}
}
let color = 1;
if (!terrainAt(state, x, y - 1)) {
color -= 1;
} else if (!terrainAt(state, x, y + 1)) {
color += 1;
}
return color;
}
function cutTerrain(state, x, y, r) {
let center = { x, y };
let radius = { x: r, y: r };
let topLeft = floor(subtract(center, radius));
let bottomRight = floor(add(center, radius));
for (let pixel of InRectangle(topLeft, bottomRight)) {
let offset = subtract(center, pixel);
if (length(offset) > r) continue;
setTerrainAt(state, pixel.x, pixel.y, false);
}
}
function createPanel() {
let data = [];
let stones = [];
for (let y = 0; y < 100; y++) {
let row = [];
for (let x = 0; x < 128; x++) {
row.push(true);
}
data.push(row);
}
for (let i = 0; i < 30; i++) {
if (Math.random() * 100 < 40) {
let r = Math.random() * 5;
stones.push({
x: Math.random() * 128,
y: Math.random() * (panelHeight - r * 2) + r,
r,
c: Math.floor(Math.random() * 3) + 4
});
}
}
return { data, stones };
}
Update.Subscribe(state => {
let { cameraY, terrain, lowestPanel, highestPanel } = state;
let panelTop = Math.floor(cameraY / panelHeight) - 1;
let panelBottom = panelTop + 5;
let panelMin = panelTop - 3;
for (let i = panelTop; i < panelBottom; i++) {
if (!terrain[i] && state.started) {
terrain[i] = createPanel();
if (state.lowestPanel < i) state.lowestPanel = i;
}
}
for (let i = highestPanel; i < panelMin; i++) {
if (terrain[i]) {
state.highestPanel = i;
delete terrain[i];
}
}
});
DrawWorld.Subscribe(state => {
let { terrain, cameraY } = state;
let top = Math.max(0, Math.floor(cameraY));
let bottom = Math.floor(cameraY + 128);
for (let pixel of InRectangle({ x: 0, y: top }, { x: panelWidth, y: bottom })) {
if (terrainAt(state, pixel.x, pixel.y)) {
setPixel(pixel.x, pixel.y, colorAt(state, pixel.x, pixel.y));
}
}
});
Reset.Subscribe(state => {
state.base = null;
state.score = 0;
});
function shortenedScore({ score, base }) {
if (!base) return "0";
let integer = Math.floor(score);
let decimal = (score - integer).toString().substring(1, 4);
return integer + decimal;
}
Update.Subscribe(state => {
let player = state.player;
if (!state.base && player.grounded) {
state.base = player.position.y;
}
if (state.base) {
if (player.position.y - state.base > state.score) {
state.score = player.position.y - state.base;
}
}
});
DrawWorld.Subscribe(({ score, base }) => {
sprite(0, score + (base || 0), 1);
sprite(120, score + (base || 0), 1, 0, true);
});
DrawUI.Subscribe(state => {
if (state.started) {
print(5, 120, shortenedScore(state), 6);
}
});
const fuzeTime = 100;
const fuzeSpeed = 0.75;
const bombRadius = 25;
const knockBack = 30;
const shakeAmount = 20;
const startingRadius = 20;
const animationSpeed = 3;
Reset.Subscribe(state => {
state.explosions = [];
});
function newExplosion(state, x, y) {
state.explosions.push({
x,
y,
r: startingRadius,
c: 0,
delay: animationSpeed
});
let amount = shakeAmount;
if (!state.started) amount = amount / 2;
shakeCamera(state, amount);
}
Update.Subscribe((state) => {
let remainingExplosions = [];
for (let explosion of state.explosions) {
if (explosion.delay > 0) {
explosion.delay--;
remainingExplosions.push(explosion);
} else {
if (explosion.c == 7) continue;
remainingExplosions.push(explosion);
explosion.c += 1;
explosion.r *= 0.8;
explosion.delay = animationSpeed;
}
}
state.explosions = remainingExplosions;
});
DrawWorld.Subscribe(({ explosions }) => {
for (let explosion of explosions) {
let radius = { x: explosion.r, y: explosion.r };
let topLeft = subtract(explosion, radius);
let bottomRight = add(explosion, radius);
for (let pixel of InRectangle(topLeft, bottomRight)) {
let offset = subtract(pixel, explosion);
if (length(offset) <= explosion.r) {
setPixel(pixel.x, pixel.y, explosion.c);
}
}
}
});
Reset.Subscribe(state => {
state.bombs = [];
});
PhysicsObjects.Subscribe(state => state.bombs);
function spawnBombs({ bombs, score, player, started }) {
let scaleFactor = 1.0;
if (!started) scaleFactor = 20;
if (Math.random() * 100 <= score / 800 + 0.25 * scaleFactor) {
bombs.push(createPhysicsObject(Math.random() * 112 + 8, player.position.y - 300, 2));
}
}
function updateBombs(state) {
let bombsToExplode = [];
let remainingBombs = [];
// Update Bomb Timers
for (const bomb of state.bombs) {
if (bomb.position.y < state.cameraPosition.y - 300) continue;
if (bomb.timeLeft != undefined) {
// Reset Bomb Sprite
bomb.sprite = 2;
// Decrement timer
bomb.timeLeft -= 1;
if (bomb.timeLeft <= 0) {
// Halve next timer length
bomb.fuze = bomb.fuze * 0.75;
if (bomb.fuze < 1 && bomb.grounded) {
// Fuze finished. Explode
bombsToExplode.push(bomb);
continue;
} else {
// Not enough iterations yet. Flicker again
bomb.timeLeft = bomb.fuze;
bomb.sprite = 3;
}
}
} else if (bomb.grounded) {
// Start fuze since the bomb has hit the ground
bomb.timeLeft = fuzeTime;
bomb.fuze = fuzeTime;
}
// Preserve this bomb
remainingBombs.push(bomb);
}
// Preserve all remaining bombs
state.bombs = remainingBombs;
// Blow up bombs
let physicsObjects = getPhysicsObjects(state);
for (const bomb of bombsToExplode) {
cutTerrain(state, bomb.position.x, bomb.position.y, bombRadius);
newExplosion(state, bomb.position.x, bomb.position.y);
for (const object of physicsObjects) {
for (let wrappedOffset of wrappedOffsets) {
let wrappedPosition = add(bomb.position, wrappedOffset);
// Find the distance to the object
let offset = subtract(object.position, wrappedPosition);
let len = length(offset);
// If the object is the player, and the length is less than 3/4 of the
// bomb radius, the player has lost.
if (object == state.player && len < bombRadius * 0.75) state.player.dead = true;
// Otherwise knockback the object by the distance * knockBack / length^2;
let lengthSquared = len * len;
object.position = add(object.position, multiply(offset, knockBack/lengthSquared));
}
}
}
}
Started.Subscribe((state) => {
for (let bomb of state.bombs) {
newExplosion(state, bomb.position.x, bomb.position.y);
}
state.bombs = [];
});
Update.Subscribe(state => {
spawnBombs(state);
updateBombs(state);
});
const runSpeed = 0.08;
const airSpeed = 0.02;
const jumpSpeed = 2;
Reset.Subscribe((state) => {
state.player = createPhysicsObject(20, -100, 0);
state.started = false;
});
PhysicsObjects.Subscribe((state) => {
if (!state.player.dead && state.started) return state.player;
else return [];
});
Update.Subscribe((state, input) => {
let player = state.player;
if (!state.started) {
if (Math.random() < 0.1) {
newExplosion(state, Math.random() * 128, -20);
}
if (input.left || input.right || input.up || input.down || input.a || input.b) {
state.started = true;
Started.Publish(state);
}
} else if (player.dead) {
if (input.upPressed || input.wPressed) Reset.Publish(state);
} else {
let speed = player.grounded ? runSpeed : airSpeed;
if (input.left) {
player.position.x -= speed;
}
if (input.right) {
player.position.x += speed;
}
if (player.grounded) {
player.jumpReady = true;
}
if ((input.upPressed || input.wPressed) && player.jumpReady) {
player.previous.y += jumpSpeed;
player.jumpReady = false;
}
}
});
const cameraMomentum = 0.8;
const cameraLag = 0.2;
const shakeFalloff = 0.7;
const cameraStartPosition = -150;
Reset.Subscribe(state => {
state.previousCameraPosition = cameraStartPosition;
state.cameraPosition = cameraStartPosition;
state.shake = 0;
state.cameraY = cameraStartPosition;
state.cameraX = 0;
});
function shakeCamera(state, amount) {
state.shake = amount;
}
Update.Subscribe(state => {
state.shake *= shakeFalloff;
let vy = state.cameraPosition - state.previousCameraPosition;
state.previousCameraPosition = state.cameraPosition;
state.cameraPosition += vy * cameraMomentum;
if (state.player.position.y > state.cameraPosition + 96) {
let cameraDiff = Math.max(state.player.position.y, -50) - (state.cameraPosition + 96);
state.cameraPosition += cameraDiff * cameraLag;
}
if (state.player.position.y < state.cameraPosition + 32) {
let cameraDiff = state.player.position.y - (state.cameraPosition + 32);
state.cameraPosition += cameraDiff * 0.2;
}
state.cameraX = Math.random() * state.shake;
state.cameraY = state.cameraPosition + Math.random() * state.shake;
});
const totalPixels = 128 * 128;
const circleUnderCoverage = 0.7;
const circleGrowthSpeed = 0.1;
const circleShrinkSpeed = 0.8;
Reset.Subscribe(state => {
state.clearCircles = state.clearCircles || [];
state.uncoveredPixels = {};
for (let y = 0; y < 128; y++) {
for (let x = 0; x < 128; x++) {
state.uncoveredPixels[y * 128 + x] = true;
}
}
});
function drawCircles({ clearCircles }) {
for (let { center: { x, y }, radius, color } of clearCircles) {
circFill(x, y, radius, color);
}
}
function growCircles({ clearCircles }) {
for (let circle of clearCircles) {
if (circle.radius < circle.targetRadius) {
let dr = circle.targetRadius - circle.radius;
circle.radius += dr * circleGrowthSpeed;
}
}
}
function addAdditionalCircles(state) {
let { uncoveredPixels, clearCircles } = state;
if (Object.keys(uncoveredPixels).length > 0) {
let centerIndex = randomUncoveredPixel(state);
let center = { x: centerIndex % 128, y: Math.floor(centerIndex / 128) };
let targetRadius = Math.random() * 15 + 5;
markCoveredPixels(state, center, targetRadius);
let radius = 1;
let color = Math.floor(Math.random() * 3) + 4;
clearCircles.push({ center, radius, color, targetRadius });
}
}
function markCoveredPixels({ uncoveredPixels }, center, targetRadius) {
let radiusVector = { x: targetRadius * circleUnderCoverage, y: targetRadius * circleUnderCoverage };
for (let pixel of InRectangle(floor(subtract(center, radiusVector)), ceil(add(center, radiusVector)))) {
if (length(subtract(pixel, center)) > targetRadius * circleUnderCoverage) continue;
if (pixel.x < 0 || pixel.x >= 128 || pixel.y < 0 || pixel.y >= 128) continue;
let index = pixel.y * 128 + pixel.x;
delete uncoveredPixels[index];
}
}
function randomUncoveredPixel({ uncoveredPixels }) {
let elementsRemaining = Math.floor(Math.random() * Object.keys(uncoveredPixels).length);
for (let index in uncoveredPixels) {
if (elementsRemaining == 0) {
return index;
}
elementsRemaining --;
}
}
function printResults(state) {
print(30, 50, "You died.");
print(30, 60, "Score: " + shortenedScore(state));
print(30, 70, "Jump to play again.");
}
function shrinkCircles(state) {
let remainingCircles = [];
for (let circle of state.clearCircles) {
circle.radius *= circleShrinkSpeed;
if (circle.radius > 1) remainingCircles.push(circle);
}
state.clearCircles = remainingCircles;
}
DrawWorld.Subscribe(() => {
print(5, 0, "left/right to move");
print(5, -8, "up to jump");
});
DrawUI.Subscribe(state => {
drawCircles(state);
if (state.player.dead) {
growCircles(state);
addAdditionalCircles(state);
printResults(state);
} else {
shrinkCircles(state);
}
});
init = (state) => {
Reset.Publish(state);
}
update = (state, input) => {
Update.Publish(state, input);
}
draw = (state) => {
clear();
camera(state.cameraX, state.cameraY);
DrawWorld.Publish(state);
camera(state.cameraX, state.cameraY + 110);
map(0, 0);
camera();
DrawUI.Publish(state);
}
[
[
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
48,
49,
50,
51,
52,
53,
54,
39,
56,
57,
58,
59,
60,
45,
62,
63,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
],
[
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null
]
]
{
"iframeVersion": "0.1.272",
"lines": [
162,
151,
129,
36,
149,
47,
137,
17
]
}
{
"0": [
" 3333 ",
" 333333 ",
"33333333",
"33333333",
"33333333",
"33333333",
" 333333 ",
" 3333 "
],
"1": [
"5 ",
"65 ",
"465 ",
"3465 ",
"3465 ",
"465 ",
"65 ",
"5 "
],
"2": [
" 6666 ",
" 664466 ",
"66644666",
"66644666",
"66644666",
"66666666",
" 664466 ",
" 6666 "
],
"3": [
" 4444 ",
" 443344 ",
"44433444",
"44433444",
"44433444",
"44444444",
" 443344 ",
" 4444 "
],
"16": [
" 00",
" 0000",
" 00000",
" 000000",
" 0000000",
" 0000000",
"00000000",
"00000000"
],
"17": [
"0 000 ",
"0 00000",
"0 00000",
" 0000",
" 0000",
" 0000",
" 0000",
" 0000"
],
"18": [
" ",
" 00",
"0 00",
"00 ",
"000 ",
"000 ",
"0000 ",
"0000 "
],
"19": [
" ",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
"20": [
" ",
"0 00000",
"0 00000",
"0 0000",
"0 000",
"0 000",
"0 00",
"0 00"
],
"21": [
" ",
"00 ",
"000 ",
"0000 ",
"00000 ",
"00000 ",
"000000 ",
"000000 "
],
"22": [
" ",
" 0",
" 00",
" 000",
" 0000",
" 00000",
" 00000",
" 000000"
],
"23": [
" 000 000",
"0000 000",
"000 00",
"00 0",
"00 0",
"00 0",
"00 0",
"00 0"
],
"24": [
" ",
"00 ",
"000 ",
"0000 ",
"00000 ",
"000000 ",
"000000 ",
"0000000 "
],
"25": [
" ",
" 000000",
" 000000",
" 0000",
" 0000",
" 000",
" 000",
" 000"
],
"26": [
" ",
"0000 ",
"00000 ",
"00000 ",
"00000 ",
"000000 ",
"000000 ",
"000000 "
],
"27": [
" ",
" 00000",
" 00000",
" 00000",
" 00000",
" 00000",
" 00000",
" 00000"
],
"28": [
" ",
"000000 ",
"000000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 "
],
"29": [
" ",
"00000000",
"00000000",
" 000000",
" 000000",
" 000000",
" 000000",
" 000000"
],
"30": [
" ",
"000 000",
"000 000",
"000 00",
"000 0",
"000 0",
"000 ",
"000 "
],
"31": [
" ",
"000 ",
"00000 ",
"000000 ",
"0000000 ",
"0000000 ",
"00000000",
"00000000"
],
"32": [
"00000000",
"00000000",
" 0000000",
" 0000000",
" 000000",
" 00000",
" 0000",
" 00"
],
"33": [
" 0000",
" 0000",
" 0000",
" 0000",
" 0000",
" 0000",
"0 00000",
"0 000 "
],
"34": [
"0000 ",
"0000 ",
"000 ",
"000 ",
"00 ",
"0 ",
" ",
" "
],
"35": [
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
"36": [
"0 00",
"0 00",
"0 00",
"0 000",
"0 000",
"0 000",
"0 00000",
"0 00000"
],
"37": [
"000000 ",
"000000 ",
"000000 ",
"00000 ",
"00000 ",
"0000 ",
"00 ",
" "
],
"38": [
" 000000",
" 0000000",
" 0000000",
" 0000000",
" 0000000",
" 0000000",
" 0000000",
" 0000000"
],
"39": [
"00 0",
"00 0",
"00 0",
"00 0",
"00 0",
"00 0",
"00 0",
"00 0"
],
"40": [
"0000000 ",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
"41": [
" 00",
" 00",
" 00",
" 0",
" 0",
" 0",
" 0 0",
" 0 "
],
"42": [
"000000 ",
"0000000 ",
"0000000 ",
"0000000 ",
"00000000",
"00000000",
"00000000",
"00000000"
],
"43": [
" 0000",
" 0000",
" 0 0000",
" 0 0000",
"00 0000",
"00 0000",
"00 0000",
"0 0000"
],
"44": [
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 "
],
"45": [
" 000000",
" 000000",
" 000000",
" 000000",
" 000000",
" 000000",
" 000000",
" 000000"
],
"46": [
"000 ",
"000 ",
"000 ",
"000 0",
"000 0",
"000 0",
"000 000",
"000 000"
],
"47": [
"00000000",
"00000000",
"00000000",
"0000000 ",
"0000000 ",
"000000 ",
"0000 ",
"00 "
],
"48": [
" 0000",
" 000000",
" 0000000",
" 0000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
"49": [
"0 00000",
" 0000",
" 0000",
" 0000",
" 0000",
" 0000",
" 0000",
" 0000"
],
"50": [
" ",
"00 ",
"000 ",
"000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 "
],
"51": [
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000"
],
"52": [
"0 00000",
"0 000",
"0 000",
"0 000",
"0 00",
"0 00",
"0 00",
"0 00"
],
"53": [
"00 ",
"0000 ",
"00000 ",
"00000 ",
"000000 ",
"000000 ",
"000000 ",
"000000 "
],
"54": [
" 0000000",
" 0000000",
" 0000000",
" 0000000",
" 0000000",
" 0000000",
" 0000000",
" 000000"
],
"55": [
"00 0",
"00 0",
"00 0",
"00 0",
"00 0",
"00 0",
"00 0",
"00 0"
],
"56": [
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"0000000 "
],
"57": [
" 0 ",
" 0 ",
" 00 ",
" 00 ",
" 00 ",
" 00 ",
" 00 ",
" 00 "
],
"58": [
"00000000",
"00000000",
" 0000000",
" 0000000",
" 0000000",
" 000000",
" 00000 ",
" 00000 "
],
"59": [
"0 0000",
"0 0000",
" 0000",
" 0000",
" 0000",
" 0000",
" 0000",
" 0000"
],
"60": [
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 "
],
"61": [
" 000000",
" 000000",
" 000000",
" 000000",
" 000000",
" 000000",
" 000000",
" 000000"
],
"62": [
"000 000",
"000 0",
"000 0",
"000 0",
"000 ",
"000 ",
"000 ",
"000 "
],
"63": [
"0000 ",
"000000 ",
"0000000 ",
"0000000 ",
"00000000",
"00000000",
"00000000",
"00000000"
],
"64": [
"00000000",
"00000000",
"00000000",
" 0000000",
" 0000000",
" 000000",
" 00000",
" 000"
],
"65": [
" 0000",
" 0000",
" 0000",
" 0000",
" 0000",
"0 00000",
"0 00000",
"0 0000 "
],
"66": [
"0000 ",
"0000 ",
"0000 ",
"000 ",
"000 ",
"00 00",
"0 00",
" "
],
"67": [
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
"00000000",
" "
],
"68": [
"0 00",
"0 00",
"0 000",
"0 000",
"0 0000",
"0 00000",
"0 00000",
" "
],
"69": [
"000000 ",
"000000 ",
"000000 ",
"00000 ",
"0000 ",
"000 ",
"0 ",
" "
],
"70": [
" 000000",
" 00000",
" 00000",
" 0000",
" 000",
" 00",
" 0",
" "
],
"71": [
"00 0",
"00 0",
"00 0",
"00 0",
"00 0",
"000 00",
"0000 000",
" 000 000"
],
"72": [
"0000000 ",
"000000 ",
"000000 ",
"00000 ",
"0000 ",
"000 ",
"00 ",
" "
],
"73": [
" 00 ",
" 00 ",
" 000 ",
" 000 ",
" 0000",
" 000000",
" 000000",
" "
],
"74": [
" 00000 ",
" 0000 ",
" 000 ",
" 000 ",
" 00 ",
"0 00 ",
"0 0 ",
" "
],
"75": [
" 0000",
" 0000",
" 0000",
" 0000",
" 00000",
" 000000",
" 000000",
" "
],
"76": [
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"0000 ",
"000000 ",
"000000 ",
" "
],
"77": [
" 000000",
" 000000",
" 000000",
" 000000",
" 000000",
"00000000",
"00000000",
" "
],
"78": [
"000 ",
"000 0",
"000 0",
"000 0",
"000 00",
"000 000",
"000 000",
" "
],
"79": [
"00000000",
"00000000",
"0000000 ",
"0000000 ",
"000000 ",
"00000 ",
"000 ",
" "
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment