Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
public class b2CircleDef extends b2ShapeDef {
public var radius:Number;
public var localPosition:b2Vec2;
public function b2CircleDef(){
localPosition = new b2Vec2(0, 0);
super();
type = b2Shape.e_circleShape;
radius = 1;
}
}
}//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2CircleShape extends b2Shape {
public var m_localPosition:b2Vec2;
public var m_radius:Number;
public function b2CircleShape(_arg1:b2ShapeDef){
m_localPosition = new b2Vec2();
super(_arg1);
var _local2:b2CircleDef = (_arg1 as b2CircleDef);
m_type = e_circleShape;
m_localPosition.SetV(_local2.localPosition);
m_radius = _local2.radius;
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
var _local10:Number;
var _local6:b2Mat22 = _arg1.R;
var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y)));
var _local8:Number = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y)));
var _local9:Number = (_arg4.p1.x - _local7);
_local10 = (_arg4.p1.y - _local8);
var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius));
if (_local11 < 0){
return (false);
};
var _local12:Number = (_arg4.p2.x - _arg4.p1.x);
var _local13:Number = (_arg4.p2.y - _arg4.p1.y);
var _local14:Number = ((_local9 * _local12) + (_local10 * _local13));
var _local15:Number = ((_local12 * _local12) + (_local13 * _local13));
var _local16:Number = ((_local14 * _local14) - (_local15 * _local11));
if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){
return (false);
};
var _local17:Number = -((_local14 + Math.sqrt(_local16)));
if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){
_local17 = (_local17 / _local15);
_arg2[0] = _local17;
_arg3.x = (_local9 + (_local17 * _local12));
_arg3.y = (_local10 + (_local17 * _local13));
_arg3.Normalize();
return (true);
};
return (false);
}
public function GetLocalPosition():b2Vec2{
return (m_localPosition);
}
public function GetRadius():Number{
return (m_radius);
}
override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
var _local4:b2Mat22;
_local4 = _arg2.R;
var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y)));
var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y)));
_local4 = _arg3.R;
var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y)));
var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y)));
_arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius));
_arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius));
}
override public function ComputeMass(_arg1:b2MassData):void{
_arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius);
_arg1.center.SetV(m_localPosition);
_arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y))));
}
override public function UpdateSweepRadius(_arg1:b2Vec2):void{
var _local2:Number = (m_localPosition.x - _arg1.x);
var _local3:Number = (m_localPosition.y - _arg1.y);
_local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop);
}
override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
var _local3:b2Mat22 = _arg2.R;
var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y)));
var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y)));
_arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius));
_arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius));
}
override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
var _local3:b2Mat22 = _arg1.R;
var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y)));
var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y)));
_local4 = (_arg2.x - _local4);
_local5 = (_arg2.y - _local5);
return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius)));
}
}
}//package Box2D.Collision.Shapes
Section 3
//b2ConcaveArcDef (Box2D.Collision.Shapes.b2ConcaveArcDef)
package Box2D.Collision.Shapes {
public class b2ConcaveArcDef extends b2PolygonDef {
public var radius:Number;
public function b2ConcaveArcDef(){
type = b2Shape.e_concaveArcShape;
radius = 1;
}
}
}//package Box2D.Collision.Shapes
Section 4
//b2ConcaveArcShape (Box2D.Collision.Shapes.b2ConcaveArcShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2ConcaveArcShape extends b2PolygonShape {
public var m_radius:Number;
public var m_radius2:Number;
public var m_arcCenter:b2Vec2;
public var m_dot:Number;
public var m_norm:Number;
public function b2ConcaveArcShape(_arg1:b2ShapeDef){
var _local11:Number;
var _local12:Number;
super(_arg1);
var _local2:b2ConcaveArcDef = (_arg1 as b2ConcaveArcDef);
m_radius = _local2.radius;
m_radius2 = (m_radius * m_radius);
var _local3:b2Vec2 = m_vertices[0];
var _local4:b2Vec2 = m_vertices[1];
var _local5:Number = (_local3.x - _local4.x);
var _local6:Number = (_local3.y - _local4.y);
var _local7:Number = ((_local5 * _local5) + (_local6 * _local6));
var _local8:Number = Math.sqrt(_local7);
if ((_local7 / 4) > m_radius2){
m_radius2 = (_local7 / 4);
m_radius = (_local8 / 2);
};
var _local9:Number = Math.sqrt((m_radius2 - (_local7 * 0.25)));
m_arcCenter = new b2Vec2((((_local3.x + _local4.x) / 2) + (_local9 * m_normals[0].x)), (((_local3.y + _local4.y) / 2) + (_local9 * m_normals[0].y)));
m_dot = (_local9 / m_radius);
m_norm = ((_local8 / 2) / m_radius);
var _local10:Number = ((m_radius + b2Settings.b2_toiSlop) * (m_radius + b2Settings.b2_toiSlop));
_local11 = m_normals[(m_vertexCount - 1)].x;
_local12 = m_normals[(m_vertexCount - 1)].y;
_local5 = (m_coreVertices[0].x - m_arcCenter.x);
_local6 = (m_coreVertices[0].y - m_arcCenter.y);
_local8 = ((_local5 * _local11) + (_local6 * _local12));
_local7 = Math.sqrt((_local10 - (_local8 * _local8)));
m_coreVertices[0].x = ((m_arcCenter.x + (_local8 * _local11)) + (_local7 * _local12));
m_coreVertices[0].y = ((m_arcCenter.y + (_local8 * _local12)) - (_local7 * _local11));
_local11 = m_normals[1].x;
_local12 = m_normals[1].y;
_local5 = (m_coreVertices[1].x - m_arcCenter.x);
_local6 = (m_coreVertices[1].y - m_arcCenter.y);
_local8 = ((_local5 * _local11) + (_local6 * _local12));
_local7 = Math.sqrt((_local10 - (_local8 * _local8)));
m_coreVertices[1].x = ((m_arcCenter.x + (_local8 * _local11)) - (_local7 * _local12));
m_coreVertices[1].y = ((m_arcCenter.y + (_local8 * _local12)) + (_local7 * _local11));
m_type = b2Shape.e_concaveArcShape;
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
b2Settings.b2Assert(false);
return (false);
}
override public function ComputeMass(_arg1:b2MassData):void{
super.ComputeMass(_arg1);
}
override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
var _local9:b2Vec2;
var _local10:Number;
var _local3:b2Mat22 = _arg1.R;
var _local4:Number = (_arg2.x - _arg1.position.x);
var _local5:Number = (_arg2.y - _arg1.position.y);
var _local6:Number = ((_local4 * _local3.col1.x) + (_local5 * _local3.col1.y));
var _local7:Number = ((_local4 * _local3.col2.x) + (_local5 * _local3.col2.y));
var _local8:int;
while (_local8 < m_vertexCount) {
_local9 = m_vertices[_local8];
_local4 = (_local6 - _local9.x);
_local5 = (_local7 - _local9.y);
_local10 = ((_local9.x * _local4) + (_local9.y * _local5));
if (_local10 > 0){
return (false);
};
_local8++;
};
_local4 = (_local6 - m_arcCenter.x);
_local5 = (_local7 - m_arcCenter.y);
return ((((_local4 * _local4) + (_local5 * _local5)) > m_radius2));
}
public static function TriangleMass(_arg1:b2MassData, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:Number):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_local6 = (1 / 3);
_local7 = (_arg3.x - _arg2.x);
_local8 = (_arg3.y - _arg2.y);
_local9 = (_arg4.x - _arg2.x);
_local10 = (_arg4.y - _arg2.y);
_local11 = ((_local7 * _local10) - (_local8 * _local9));
var _local12:Number = (0.5 * _local11);
_arg1.mass = (_local12 * _arg5);
_arg1.center.x = (_local6 * ((_arg2.x + _arg3.x) + _arg4.x));
_arg1.center.y = (_local6 * ((_arg2.y + _arg3.y) + _arg4.y));
var _local13:Number = _arg2.x;
var _local14:Number = _arg2.y;
var _local15:Number = _local7;
var _local16:Number = _local8;
var _local17:Number = _local9;
var _local18:Number = _local10;
var _local19:Number = ((_local6 * ((0.25 * (((_local15 * _local15) + (_local17 * _local15)) + (_local17 * _local17))) + ((_local13 * _local15) + (_local13 * _local17)))) + ((0.5 * _local13) * _local13));
var _local20:Number = ((_local6 * ((0.25 * (((_local16 * _local16) + (_local18 * _local16)) + (_local18 * _local18))) + ((_local14 * _local16) + (_local14 * _local18)))) + ((0.5 * _local14) * _local14));
_arg1.I = ((_local11 * (_local19 + _local20)) * _arg5);
}
public static function SegmentMass(_arg1:b2MassData, _arg2:b2Vec2, _arg3:Number, _arg4:b2Vec2, _arg5:Number, _arg6:Number):void{
var _local7:Number;
_local7 = (Math.asin(((_arg5 / _arg3) / 2)) * 2);
_arg1.mass = ((((0.5 * _arg3) * _arg3) * _local7) * _arg6);
var _local8:Number = (((2 / 3) * _arg5) / _local7);
if (_local7 < Number.MIN_VALUE){
_local8 = ((2 / 3) * _arg3);
};
_arg1.center = new b2Vec2((_arg2.x - (_arg4.x * _local8)), (_arg2.y - (_arg4.y * _local8)));
_arg1.I = ((((0.5 * _arg1.mass) * _arg3) * _arg3) - ((_arg1.mass * _local8) * _local8));
}
}
}//package Box2D.Collision.Shapes
Section 5
//b2ConvexArcShape (Box2D.Collision.Shapes.b2ConvexArcShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2ConvexArcShape extends b2Shape {
public var m_localPosition:b2Vec2;
public var m_offset:Number;
public var m_norm:b2Vec2;
public var m_dot:Number;
public var m_vertices:Array;
public var m_d:Number;
public var m_radius:Number;
public var m_obb:b2OBB;
public function b2ConvexArcShape(_arg1:b2ShapeDef){
m_localPosition = new b2Vec2();
m_obb = new b2OBB();
m_vertices = [new b2Vec2(), new b2Vec2()];
m_norm = new b2Vec2();
super(_arg1);
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
b2Settings.b2Assert(false);
return (false);
}
override public function ComputeMass(_arg1:b2MassData):void{
}
override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
super.ComputeSweptAABB(_arg1, _arg2, _arg3);
}
public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
b2Settings.b2Assert(false);
return (null);
}
override public function UpdateSweepRadius(_arg1:b2Vec2):void{
}
override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
super.ComputeAABB(_arg1, _arg2);
}
public function GetOBB():b2OBB{
return (m_obb);
}
override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
b2Settings.b2Assert(false);
return (false);
}
}
}//package Box2D.Collision.Shapes
Section 6
//b2FilterData (Box2D.Collision.Shapes.b2FilterData)
package Box2D.Collision.Shapes {
public class b2FilterData {
public var maskBits:uint;// = 0xFFFF
public var groupIndex:int;// = 0
public var categoryBits:uint;// = 1
public function Copy():b2FilterData{
var _local1:b2FilterData = new b2FilterData();
_local1.categoryBits = categoryBits;
_local1.maskBits = maskBits;
_local1.groupIndex = groupIndex;
return (_local1);
}
}
}//package Box2D.Collision.Shapes
Section 7
//b2MassData (Box2D.Collision.Shapes.b2MassData)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
public class b2MassData {
public var mass:Number;// = 0
public var center:b2Vec2;
public var I:Number;// = 0
public function b2MassData(){
center = new b2Vec2(0, 0);
super();
}
public function Set(_arg1:b2MassData):void{
mass = _arg1.mass;
center.x = _arg1.center.x;
center.y = _arg1.center.y;
I = _arg1.I;
}
public static function Add(... _args):b2MassData{
var _local3:b2MassData;
var _local4:b2Vec2;
var _local2:b2MassData = new (b2MassData);
for each (_local3 in _args) {
_local2.mass = (_local2.mass + _local3.mass);
};
if (Math.abs(_local2.mass) > Number.MIN_VALUE){
for each (_local3 in _args) {
_local2.center.x = (_local2.center.x + (_local3.mass * _local3.center.x));
_local2.center.y = (_local2.center.y + (_local3.mass * _local3.center.y));
};
_local2.center.x = (_local2.center.x / _local2.mass);
_local2.center.y = (_local2.center.y / _local2.mass);
for each (_local3 in _args) {
_local2.I = (_local2.I + _local3.I);
_local4 = b2Math.SubtractVV(_local3.center, _local2.center);
_local2.I = (_local2.I + (_local3.mass * b2Math.b2Dot(_local4, _local4)));
};
};
return (_local2);
}
}
}//package Box2D.Collision.Shapes
Section 8
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2PolygonDef extends b2ShapeDef {
public var vertices:Array;
public var vertexCount:int;
private static var s_mat:b2Mat22 = new b2Mat22();
public function b2PolygonDef(){
vertices = new Array(b2Settings.b2_maxPolygonVertices);
super();
type = b2Shape.e_polygonShape;
vertexCount = 0;
var _local1:int;
while (_local1 < b2Settings.b2_maxPolygonVertices) {
vertices[_local1] = new b2Vec2();
_local1++;
};
}
public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{
var _local5:b2Vec2;
var _local6:b2Mat22;
var _local7:int;
vertexCount = 4;
vertices[0].Set(-(_arg1), -(_arg2));
vertices[1].Set(_arg1, -(_arg2));
vertices[2].Set(_arg1, _arg2);
vertices[3].Set(-(_arg1), _arg2);
if (_arg3){
_local5 = _arg3;
_local6 = s_mat;
_local6.Set(_arg4);
_local7 = 0;
while (_local7 < vertexCount) {
_arg3 = vertices[_local7];
_arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y)));
_arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y)));
_arg3.x = _arg1;
_local7++;
};
};
}
public function SetAsBox(_arg1:Number, _arg2:Number):void{
vertexCount = 4;
vertices[0].Set(-(_arg1), -(_arg2));
vertices[1].Set(_arg1, -(_arg2));
vertices[2].Set(_arg1, _arg2);
vertices[3].Set(-(_arg1), _arg2);
}
}
}//package Box2D.Collision.Shapes
Section 9
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PolygonShape extends b2Shape {
public var m_coreVertices:Array;
public var m_vertices:Array;
private var s_supportVec:b2Vec2;
public var m_centroid:b2Vec2;
public var m_normals:Array;
public var m_obb:b2OBB;
public var m_vertexCount:int;
private static var s_computeMat:b2Mat22 = new b2Mat22();
private static var s_sweptAABB1:b2AABB = new b2AABB();
private static var s_sweptAABB2:b2AABB = new b2AABB();
public function b2PolygonShape(_arg1:b2ShapeDef){
var _local3:int;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
s_supportVec = new b2Vec2();
m_obb = new b2OBB();
m_vertices = new Array(b2Settings.b2_maxPolygonVertices);
m_normals = new Array(b2Settings.b2_maxPolygonVertices);
m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices);
super(_arg1);
m_type = e_polygonShape;
var _local2:b2PolygonDef = (_arg1 as b2PolygonDef);
m_vertexCount = _local2.vertexCount;
var _local4:int = _local3;
var _local5:int = _local3;
_local3 = 0;
while (_local3 < m_vertexCount) {
m_vertices[_local3] = _local2.vertices[_local3].Copy();
_local3++;
};
_local3 = 0;
while (_local3 < m_vertexCount) {
_local4 = _local3;
_local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0;
_local6 = (m_vertices[_local5].x - m_vertices[_local4].x);
_local7 = (m_vertices[_local5].y - m_vertices[_local4].y);
_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8));
_local3++;
};
m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount);
ComputeOBB(m_obb, m_vertices, m_vertexCount);
_local3 = 0;
while (_local3 < m_vertexCount) {
_local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1);
_local5 = _local3;
_local9 = m_normals[_local4].x;
_local10 = m_normals[_local4].y;
_local11 = m_normals[_local5].x;
_local12 = m_normals[_local5].y;
_local13 = (m_vertices[_local3].x - m_centroid.x);
_local14 = (m_vertices[_local3].y - m_centroid.y);
_local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop);
_local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop);
_local17 = (1 / ((_local9 * _local12) - (_local10 * _local11)));
m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y));
_local3++;
};
}
override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
var _local4:b2AABB = s_sweptAABB1;
var _local5:b2AABB = s_sweptAABB2;
ComputeAABB(_local4, _arg2);
ComputeAABB(_local5, _arg3);
_arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y);
_arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y);
}
public function GetVertices():Array{
return (m_vertices);
}
public function GetCoreVertices():Array{
return (m_coreVertices);
}
public function GetCentroid():b2Vec2{
return (m_centroid);
}
public function GetOBB():b2OBB{
return (m_obb);
}
public function GetFirstVertex(_arg1:b2XForm):b2Vec2{
return (b2Math.b2MulX(_arg1, m_coreVertices[0]));
}
public function Centroid(_arg1:b2XForm):b2Vec2{
return (b2Math.b2MulX(_arg1, m_centroid));
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
var _local8:Number;
var _local9:Number;
var _local10:b2Mat22;
var _local11:b2Vec2;
var _local20:Number;
var _local21:Number;
var _local6:Number = 0;
var _local7:Number = _arg5;
_local8 = (_arg4.p1.x - _arg1.position.x);
_local9 = (_arg4.p1.y - _arg1.position.y);
_local10 = _arg1.R;
var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y));
var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y));
_local8 = (_arg4.p2.x - _arg1.position.x);
_local9 = (_arg4.p2.y - _arg1.position.y);
_local10 = _arg1.R;
var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y));
var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y));
var _local16:Number = (_local14 - _local12);
var _local17:Number = (_local15 - _local13);
var _local18 = -1;
var _local19:int;
while (_local19 < m_vertexCount) {
_local11 = m_vertices[_local19];
_local8 = (_local11.x - _local12);
_local9 = (_local11.y - _local13);
_local11 = m_normals[_local19];
_local20 = ((_local11.x * _local8) + (_local11.y * _local9));
_local21 = ((_local11.x * _local16) + (_local11.y * _local17));
if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){
_local6 = (_local20 / _local21);
_local18 = _local19;
} else {
if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){
_local7 = (_local20 / _local21);
};
};
if (_local7 < _local6){
return (false);
};
_local19++;
};
if (_local18 >= 0){
_arg2[0] = _local6;
_local10 = _arg1.R;
_local11 = m_normals[_local18];
_arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
return (true);
};
return (false);
}
override public function ComputeMass(_arg1:b2MassData):void{
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local2:Number = 0;
var _local3:Number = 0;
var _local4:Number = 0;
var _local5:Number = 0;
var _local6:Number = 0;
var _local7:Number = 0;
var _local8:Number = (1 / 3);
var _local9:int;
while (_local9 < m_vertexCount) {
_local10 = m_vertices[_local9];
_local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0];
_local12 = (_local10.x - _local6);
_local13 = (_local10.y - _local7);
_local14 = (_local11.x - _local6);
_local15 = (_local11.y - _local7);
_local16 = ((_local12 * _local15) - (_local13 * _local14));
_local17 = (0.5 * _local16);
_local4 = (_local4 + _local17);
_local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x)));
_local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y)));
_local18 = _local6;
_local19 = _local7;
_local20 = _local12;
_local21 = _local13;
_local22 = _local14;
_local23 = _local15;
_local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18));
_local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19));
_local5 = (_local5 + (_local16 * (_local24 + _local25)));
_local9++;
};
_arg1.mass = (m_density * _local4);
_local2 = (_local2 * (1 / _local4));
_local3 = (_local3 * (1 / _local4));
_arg1.center.Set(_local2, _local3);
_arg1.I = (m_density * _local5);
}
public function GetNormals():Array{
return (m_normals);
}
public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
var _local4:b2Vec2;
var _local5:b2Mat22;
var _local11:Number;
_local5 = _arg1.R;
var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y));
var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y));
var _local8:int;
_local4 = m_coreVertices[0];
var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7));
var _local10 = 1;
while (_local10 < m_vertexCount) {
_local4 = m_coreVertices[_local10];
_local11 = ((_local4.x * _local6) + (_local4.y * _local7));
if (_local11 > _local9){
_local8 = _local10;
_local9 = _local11;
};
_local10++;
};
_local5 = _arg1.R;
_local4 = m_coreVertices[_local8];
s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y)));
s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y)));
return (s_supportVec);
}
public function GetVertexCount():int{
return (m_vertexCount);
}
override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
var _local3:b2Mat22;
var _local4:b2Vec2;
var _local5:b2Mat22 = s_computeMat;
_local3 = _arg2.R;
_local4 = m_obb.R.col1;
_local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
_local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
_local4 = m_obb.R.col2;
_local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
_local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
_local5.Abs();
var _local6:b2Mat22 = _local5;
_local4 = m_obb.extents;
var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y));
var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y));
_local3 = _arg2.R;
_local4 = m_obb.center;
var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)));
var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)));
_arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8));
_arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8));
}
override public function UpdateSweepRadius(_arg1:b2Vec2):void{
var _local2:b2Vec2;
var _local4:Number;
var _local5:Number;
m_sweepRadius = 0;
var _local3:int;
while (_local3 < m_vertexCount) {
_local2 = m_coreVertices[_local3];
_local4 = (_local2.x - _arg1.x);
_local5 = (_local2.y - _arg1.y);
_local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
if (_local4 > m_sweepRadius){
m_sweepRadius = _local4;
};
_local3++;
};
}
override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
var _local3:b2Vec2;
var _local10:Number;
var _local4:b2Mat22 = _arg1.R;
var _local5:Number = (_arg2.x - _arg1.position.x);
var _local6:Number = (_arg2.y - _arg1.position.y);
var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y));
var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y));
var _local9:int;
while (_local9 < m_vertexCount) {
_local3 = m_vertices[_local9];
_local5 = (_local7 - _local3.x);
_local6 = (_local8 - _local3.y);
_local3 = m_normals[_local9];
_local10 = ((_local3.x * _local5) + (_local3.y * _local6));
if (_local10 > 0){
return (false);
};
_local9++;
};
return (true);
}
public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{
var _local3:b2Vec2;
var _local7:Number;
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
_local3 = new b2Vec2();
var _local4:Number = 0;
var _local5:Number = 0;
var _local6:Number = 0;
_local7 = (1 / 3);
var _local8:int;
while (_local8 < _arg2) {
_local9 = _arg1[_local8];
_local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0];
_local11 = (_local9.x - _local5);
_local12 = (_local9.y - _local6);
_local13 = (_local10.x - _local5);
_local14 = (_local10.y - _local6);
_local15 = ((_local11 * _local14) - (_local12 * _local13));
_local16 = (0.5 * _local15);
_local4 = (_local4 + _local16);
_local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x)));
_local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y)));
_local8++;
};
_local3.x = (_local3.x * (1 / _local4));
_local3.y = (_local3.y * (1 / _local4));
return (_local3);
}
public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{
var _local4:int;
var _local7:b2Vec2;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:int;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:b2Mat22;
var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1));
_local4 = 0;
while (_local4 < _arg3) {
_local5[_local4] = _arg2[_local4];
_local4++;
};
_local5[_arg3] = _local5[0];
var _local6:Number = Number.MAX_VALUE;
_local4 = 1;
while (_local4 <= _arg3) {
_local7 = _local5[int((_local4 - 1))];
_local8 = (_local5[_local4].x - _local7.x);
_local9 = (_local5[_local4].y - _local7.y);
_local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
_local8 = (_local8 / _local10);
_local9 = (_local9 / _local10);
_local11 = -(_local9);
_local12 = _local8;
_local13 = Number.MAX_VALUE;
_local14 = Number.MAX_VALUE;
_local15 = -(Number.MAX_VALUE);
_local16 = -(Number.MAX_VALUE);
_local17 = 0;
while (_local17 < _arg3) {
_local19 = (_local5[_local17].x - _local7.x);
_local20 = (_local5[_local17].y - _local7.y);
_local21 = ((_local8 * _local19) + (_local9 * _local20));
_local22 = ((_local11 * _local19) + (_local12 * _local20));
if (_local21 < _local13){
_local13 = _local21;
};
if (_local22 < _local14){
_local14 = _local22;
};
if (_local21 > _local15){
_local15 = _local21;
};
if (_local22 > _local16){
_local16 = _local22;
};
_local17++;
};
_local18 = ((_local15 - _local13) * (_local16 - _local14));
if (_local18 < (0.95 * _local6)){
_local6 = _local18;
_arg1.R.col1.x = _local8;
_arg1.R.col1.y = _local9;
_arg1.R.col2.x = _local11;
_arg1.R.col2.y = _local12;
_local23 = (0.5 * (_local13 + _local15));
_local24 = (0.5 * (_local14 + _local16));
_local25 = _arg1.R;
_arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24)));
_arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24)));
_arg1.extents.x = (0.5 * (_local15 - _local13));
_arg1.extents.y = (0.5 * (_local16 - _local14));
};
_local4++;
};
}
}
}//package Box2D.Collision.Shapes
Section 10
//b2Shape (Box2D.Collision.Shapes.b2Shape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2Shape {
public var m_next:b2Shape;
public var m_type:int;
public var m_sweepRadius:Number;
public var m_density:Number;
public var m_filter:b2FilterData;
public var m_friction:Number;
public var m_isSensor:Boolean;
public var m_restitution:Number;
public var m_userData;
public var m_proxyId:uint;
public var m_body:b2Body;
public static const e_polygonShape:int = 1;
public static const e_concaveArcShape:int = 5;
public static const e_convexArcShape:int = 4;
public static const e_unknownShape:int = -1;
public static const e_meshShape:int = 3;
public static const e_circleShape:int = 0;
public static const e_shapeTypeCount:int = 7;
public static const e_staticEdgeShape:int = 6;
private static var s_resetAABB:b2AABB = new b2AABB();
private static var s_syncAABB:b2AABB = new b2AABB();
private static var s_proxyAABB:b2AABB = new b2AABB();
public function b2Shape(_arg1:b2ShapeDef){
m_userData = _arg1.userData;
m_friction = _arg1.friction;
m_restitution = _arg1.restitution;
m_density = _arg1.density;
m_body = null;
m_sweepRadius = 0;
m_next = null;
m_proxyId = b2Pair.b2_nullProxy;
m_filter = _arg1.filter.Copy();
m_isSensor = _arg1.isSensor;
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetSweepRadius():Number{
return (m_sweepRadius);
}
public function GetNext():b2Shape{
return (m_next);
}
public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
}
public function GetType():int{
return (m_type);
}
public function GetRestitution():Number{
return (m_restitution);
}
public function GetFriction():Number{
return (m_friction);
}
public function GetFilterData():b2FilterData{
return (m_filter.Copy());
}
public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
return (false);
}
public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{
if (m_proxyId == b2Pair.b2_nullProxy){
return;
};
_arg1.DestroyProxy(m_proxyId);
var _local3:b2AABB = s_resetAABB;
ComputeAABB(_local3, _arg2);
var _local4:Boolean = _arg1.InRange(_local3);
if (_local4){
m_proxyId = _arg1.CreateProxy(_local3, this);
} else {
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function SetFilterData(_arg1:b2FilterData):void{
m_filter = _arg1.Copy();
}
public function GetUserData(){
return (m_userData);
}
public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{
if (m_proxyId == b2Pair.b2_nullProxy){
return (false);
};
var _local4:b2AABB = s_syncAABB;
ComputeSweptAABB(_local4, _arg2, _arg3);
if (_arg1.InRange(_local4)){
_arg1.MoveProxy(m_proxyId, _local4);
return (true);
};
return (false);
}
public function ComputeMass(_arg1:b2MassData):void{
}
public function IsSensor():Boolean{
return (m_isSensor);
}
public function DestroyProxy(_arg1:b2BroadPhase):void{
if (m_proxyId != b2Pair.b2_nullProxy){
_arg1.DestroyProxy(m_proxyId);
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function UpdateSweepRadius(_arg1:b2Vec2):void{
}
public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
}
public function GetBody():b2Body{
return (m_body);
}
public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{
var _local3:b2AABB = s_proxyAABB;
ComputeAABB(_local3, _arg2);
var _local4:Boolean = _arg1.InRange(_local3);
if (_local4){
m_proxyId = _arg1.CreateProxy(_local3, this);
} else {
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
return (false);
}
public static function Destroy(_arg1:b2Shape, _arg2):void{
}
public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{
switch (_arg1.type){
case e_circleShape:
return (new b2CircleShape(_arg1));
case e_polygonShape:
return (new b2PolygonShape(_arg1));
case e_convexArcShape:
return (new b2ConvexArcShape(_arg1));
case e_concaveArcShape:
return (new b2ConcaveArcShape(_arg1));
default:
throw (new Error("Shape type not found or cannot be added to Dynamic Bodies."));
};
}
}
}//package Box2D.Collision.Shapes
Section 11
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef)
package Box2D.Collision.Shapes {
public class b2ShapeDef {
public var friction:Number;// = 0.2
public var isSensor:Boolean;// = false
public var density:Number;// = 0
public var restitution:Number;// = 0
public var userData;// = null
public var filter:b2FilterData;
public var type:int;
public function b2ShapeDef(){
type = b2Shape.e_unknownShape;
filter = new b2FilterData();
super();
}
}
}//package Box2D.Collision.Shapes
Section 12
//b2StaticEdgeChain (Box2D.Collision.Shapes.b2StaticEdgeChain)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2StaticEdgeChain {
public var isALoop:Boolean;
public var edges:Array;
public function b2StaticEdgeChain(_arg1:b2ShapeDef, _arg2:b2World){
var _local4:int;
var _local5:b2Vec2;
var _local6:b2Vec2;
var _local7:b2StaticEdgeShape;
var _local8:Number;
var _local9:Number;
var _local10:b2StaticEdgeShape;
var _local11:b2Vec2;
var _local12:b2Vec2;
edges = new Array();
super();
var _local3:b2StaticEdgeChainDef = (_arg1 as b2StaticEdgeChainDef);
isALoop = _local3.isALoop;
if (_local3.isALoop){
_local4 = 0;
_local5 = _local3.vertices[(_local3.vertexCount - 1)];
} else {
_local4 = 1;
_local5 = _local3.vertices[0];
};
_local5 = _local5.Copy();
while (_local4 < _local3.vertexCount) {
_local6 = _local3.vertices[_local4];
_local6 = _local6.Copy();
_local10 = new b2StaticEdgeShape(_local5, _local6, _local3);
edges.push(_local10);
_local10.m_chain = this;
_local10.m_next = _arg2.m_groundBody.m_shapeList;
_arg2.m_groundBody.m_shapeList = _local10;
_arg2.m_groundBody.m_shapeCount++;
_local10.m_body = _arg2.m_groundBody;
_local10.CreateProxy(_arg2.m_broadPhase, _arg2.m_groundBody.m_xf);
_local10.UpdateSweepRadius(_arg2.m_groundBody.m_sweep.localCenter);
_local5 = _local6;
_local4++;
};
if (_local3.isALoop){
_local10 = edges[(_local3.vertexCount - 1)];
_local4 = 0;
} else {
_local10 = edges[0];
_local4 = 1;
};
_local8 = Math.atan2(_local10.m_direction.y, _local10.m_direction.x);
while (_local4 < edges.length) {
_local7 = edges[_local4];
_local9 = Math.atan2(_local7.m_direction.y, _local7.m_direction.x);
_local11 = _local7.m_direction.Copy();
_local11.Multiply(Math.tan(((_local9 - _local8) * 0.5)));
_local11.Subtract(_local7.m_normal);
_local11.Multiply(b2Settings.b2_toiSlop);
_local11.Add(_local7.m_v1);
_local12 = _local10.m_direction.Copy();
_local12.Add(_local7.m_direction);
_local12.Normalize();
_local10.SetNextEdge(_local7, _local11, _local12);
_local7.SetPrevEdge(_local10, _local11, _local12);
_local10 = _local7;
_local8 = _local9;
_local4++;
};
}
}
}//package Box2D.Collision.Shapes
Section 13
//b2StaticEdgeChainDef (Box2D.Collision.Shapes.b2StaticEdgeChainDef)
package Box2D.Collision.Shapes {
public class b2StaticEdgeChainDef extends b2ShapeDef {
public var vertices:Array;
public var vertexCount:int;
public var isALoop:Boolean;
public function b2StaticEdgeChainDef(){
vertices = new Array();
super();
type = b2Shape.e_staticEdgeShape;
isALoop = true;
vertexCount = 0;
}
}
}//package Box2D.Collision.Shapes
Section 14
//b2StaticEdgeShape (Box2D.Collision.Shapes.b2StaticEdgeShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2StaticEdgeShape extends b2Shape {
public var m_normal:b2Vec2;
public var m_cornerDir1:b2Vec2;
public var m_v1:b2Vec2;
public var m_coreV1:b2Vec2;
public var m_coreV2:b2Vec2;
public var m_v2:b2Vec2;
public var m_cornerDir2:b2Vec2;
public var m_nextEdge:b2StaticEdgeShape;
public var m_direction:b2Vec2;
public var m_prevEdge:b2StaticEdgeShape;
public var m_chain:b2StaticEdgeChain;
public var m_length:Number;
public function b2StaticEdgeShape(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2StaticEdgeChainDef){
super(_arg3);
m_type = e_staticEdgeShape;
m_v1 = _arg1;
m_v2 = _arg2;
m_direction = m_v2.Copy();
m_direction.Subtract(m_v1);
m_length = m_direction.Normalize();
m_normal = new b2Vec2(m_direction.y, -(m_direction.x));
m_coreV1 = m_normal.Copy();
m_coreV1.Subtract(m_direction);
m_coreV1.Multiply(-(b2Settings.b2_toiSlop));
m_coreV1.Add(m_v1);
m_coreV2 = m_normal.Copy();
m_coreV2.Add(m_direction);
m_coreV2.Multiply(-(b2Settings.b2_toiSlop));
m_coreV2.Add(m_v2);
m_cornerDir1 = m_normal;
m_cornerDir2 = m_normal.Copy();
m_cornerDir2.Multiply(-1);
}
public function GetDirectionVector():b2Vec2{
return (m_direction);
}
override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
return (ComputeAABB(_arg1, _arg2));
}
public function GetFirstVertex(_arg1:b2XForm):b2Vec2{
return (m_coreV1);
}
public function GetNormalVector():b2Vec2{
return (m_normal);
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local6:Number = (100 * Number.MIN_VALUE);
var _local7:Number = (_arg4.p2.x - _arg4.p1.x);
var _local8:Number = (_arg4.p2.y - _arg4.p1.y);
var _local9:Number = (m_v2.y - m_v1.y);
var _local10:Number = (m_v1.x - m_v2.x);
var _local11:Number = -(((_local7 * _local9) + (_local8 * _local10)));
if (_local11 > _local6){
_local12 = (_arg4.p1.x - m_v1.x);
_local13 = (_arg4.p1.y - m_v1.y);
_local14 = ((_local12 * _local9) + (_local13 * _local10));
if ((((0 <= _local14)) && ((_local14 <= (_arg5 * _local11))))){
_local15 = ((-(_local7) * _local13) + (_local8 * _local12));
if (((((-(_local6) * _local11) <= _local15)) && ((_local15 <= (_local11 * (1 + _local6)))))){
_local14 = (_local14 / _local11);
_local16 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10)));
_local9 = (_local9 / _local16);
_local10 = (_local10 / _local16);
_arg2[0] = _local14;
_arg3.Set(_local9, _local10);
return (true);
};
};
};
return (false);
}
public function GetParentChain():b2StaticEdgeChain{
return (m_chain);
}
public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
return (((((m_coreV1.x * _arg2) + (m_coreV1.y * _arg3)) > ((m_coreV2.x * _arg2) + (m_coreV2.y * _arg3)))) ? m_coreV1 : m_coreV2);
}
public function SetPrevEdge(_arg1:b2StaticEdgeShape, _arg2:b2Vec2, _arg3:b2Vec2):void{
m_prevEdge = _arg1;
m_coreV1 = _arg2;
m_cornerDir1 = _arg3;
}
override public function UpdateSweepRadius(_arg1:b2Vec2):void{
var _local2:Number = (m_v1.x - _arg1.x);
var _local3:Number = (m_v1.y - _arg1.y);
var _local4:Number = ((_local2 * _local2) + (_local3 * _local3));
_local2 = (m_v2.x - _arg1.x);
_local3 = (m_v2.y - _arg1.y);
var _local5:Number = ((_local2 * _local2) + (_local3 * _local3));
_local2 = Math.sqrt(((_local4 > _local5)) ? _local4 : _local5);
m_sweepRadius = _local2;
}
public function GetVertex1():b2Vec2{
return (m_v1);
}
public function SetNextEdge(_arg1:b2StaticEdgeShape, _arg2:b2Vec2, _arg3:b2Vec2):void{
m_nextEdge = _arg1;
m_coreV2 = _arg2;
m_cornerDir2 = _arg3;
}
public function GetLength():Number{
return (m_length);
}
override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
if (m_v1.x < m_v2.x){
_arg1.lowerBound.x = m_v1.x;
_arg1.upperBound.x = m_v2.x;
} else {
_arg1.lowerBound.x = m_v2.x;
_arg1.upperBound.x = m_v1.x;
};
if (m_v1.y < m_v2.y){
_arg1.lowerBound.y = m_v1.y;
_arg1.upperBound.y = m_v2.y;
} else {
_arg1.lowerBound.y = m_v2.y;
_arg1.upperBound.y = m_v1.y;
};
}
public function GetVertex2():b2Vec2{
return (m_v2);
}
}
}//package Box2D.Collision.Shapes
Section 15
//b2AABB (Box2D.Collision.b2AABB)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2AABB {
public var upperBound:b2Vec2;
public var lowerBound:b2Vec2;
public function b2AABB(){
lowerBound = new b2Vec2();
upperBound = new b2Vec2();
super();
}
public function IsValid():Boolean{
var _local1:Number = (upperBound.x - lowerBound.x);
var _local2:Number = (upperBound.y - lowerBound.y);
var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0)));
_local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid()));
return (_local3);
}
}
}//package Box2D.Collision
Section 16
//b2Bound (Box2D.Collision.b2Bound)
package Box2D.Collision {
public class b2Bound {
public var value:uint;
public var proxyId:uint;
public var stabbingCount:uint;
public function Swap(_arg1:b2Bound):void{
var _local2:uint = value;
var _local3:uint = proxyId;
var _local4:uint = stabbingCount;
value = _arg1.value;
proxyId = _arg1.proxyId;
stabbingCount = _arg1.stabbingCount;
_arg1.value = _local2;
_arg1.proxyId = _local3;
_arg1.stabbingCount = _local4;
}
public function IsLower():Boolean{
return (((value & 1) == 0));
}
public function IsUpper():Boolean{
return (((value & 1) == 1));
}
}
}//package Box2D.Collision
Section 17
//b2BoundValues (Box2D.Collision.b2BoundValues)
package Box2D.Collision {
public class b2BoundValues {
public var lowerValues:Array;
public var upperValues:Array;
public function b2BoundValues(){
lowerValues = [0, 0];
upperValues = [0, 0];
super();
}
}
}//package Box2D.Collision
Section 18
//b2BroadPhase (Box2D.Collision.b2BroadPhase)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2BroadPhase {
public var m_bounds:Array;
public var m_quantizationFactor:b2Vec2;
public var m_worldAABB:b2AABB;
public var m_freeProxy:uint;
public var m_proxyCount:int;
public var m_proxyPool:Array;
public var m_queryResultCount:int;
public var m_pairManager:b2PairManager;
public var m_timeStamp:uint;
public var m_queryResults:Array;
public static const b2_nullEdge:uint = b2Settings.USHRT_MAX;
public static const b2_invalid:uint = b2Settings.USHRT_MAX;
public static var s_validate:Boolean = false;
public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){
var _local3:int;
var _local5:Number;
var _local6:b2Proxy;
var _local7:int;
m_pairManager = new b2PairManager();
m_proxyPool = new Array(b2Settings.b2_maxPairs);
m_bounds = new Array((2 * b2Settings.b2_maxProxies));
m_queryResults = new Array(b2Settings.b2_maxProxies);
m_quantizationFactor = new b2Vec2();
super();
m_pairManager.Initialize(this, _arg2);
m_worldAABB = _arg1;
m_proxyCount = 0;
_local3 = 0;
while (_local3 < b2Settings.b2_maxProxies) {
m_queryResults[_local3] = 0;
_local3++;
};
m_bounds = new Array(2);
_local3 = 0;
while (_local3 < 2) {
m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies));
_local7 = 0;
while (_local7 < (2 * b2Settings.b2_maxProxies)) {
m_bounds[_local3][_local7] = new b2Bound();
_local7++;
};
_local3++;
};
var _local4:Number = (_arg1.upperBound.x - _arg1.lowerBound.x);
_local5 = (_arg1.upperBound.y - _arg1.lowerBound.y);
m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4);
m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5);
_local3 = 0;
while (_local3 < (b2Settings.b2_maxProxies - 1)) {
_local6 = new b2Proxy();
m_proxyPool[_local3] = _local6;
_local6.SetNext((_local3 + 1));
_local6.timeStamp = 0;
_local6.overlapCount = b2_invalid;
_local6.userData = null;
_local3++;
};
_local6 = new b2Proxy();
m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6;
_local6.SetNext(b2Pair.b2_nullProxy);
_local6.timeStamp = 0;
_local6.overlapCount = b2_invalid;
_local6.userData = null;
m_freeProxy = 0;
m_timeStamp = 1;
m_queryResultCount = 0;
}
public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{
var _local6:uint;
var _local7:uint;
var _local12:b2Proxy;
var _local4:Array = new Array();
var _local5:Array = new Array();
ComputeBounds(_local4, _local5, _arg1);
var _local8:Array = [_local6];
var _local9:Array = [_local7];
Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0);
Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1);
var _local10:int;
var _local11:int;
while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) {
_local12 = m_proxyPool[m_queryResults[_local11]];
_arg2[_local11] = _local12.userData;
_local11++;
_local10++;
};
m_queryResultCount = 0;
IncrementTimeStamp();
return (_local10);
}
public function Commit():void{
m_pairManager.Commit();
}
public function GetProxy(_arg1:int):b2Proxy{
var _local2:b2Proxy = m_proxyPool[_arg1];
if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){
return (null);
};
return (_local2);
}
private function IncrementTimeStamp():void{
var _local1:uint;
if (m_timeStamp == b2Settings.USHRT_MAX){
_local1 = 0;
while (_local1 < b2Settings.b2_maxProxies) {
(m_proxyPool[_local1] as b2Proxy).timeStamp = 0;
_local1++;
};
m_timeStamp = 1;
} else {
m_timeStamp++;
};
}
private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{
var _local10:b2Bound;
var _local12:int;
var _local13:int;
var _local14:b2Proxy;
var _local8:uint = BinarySearch(_arg5, _arg6, _arg3);
var _local9:uint = BinarySearch(_arg5, _arg6, _arg4);
var _local11:uint = _local8;
while (_local11 < _local9) {
_local10 = _arg5[_local11];
if (_local10.IsLower()){
IncrementOverlapCount(_local10.proxyId);
};
_local11++;
};
if (_local8 > 0){
_local12 = (_local8 - 1);
_local10 = _arg5[_local12];
_local13 = _local10.stabbingCount;
while (_local13) {
_local10 = _arg5[_local12];
if (_local10.IsLower()){
_local14 = m_proxyPool[_local10.proxyId];
if (_local8 <= _local14.upperBounds[_arg7]){
IncrementOverlapCount(_local10.proxyId);
_local13--;
};
};
_local12--;
};
};
_arg1[0] = _local8;
_arg2[0] = _local9;
}
private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{
var _local4:Array;
var _local5:b2Bound;
var _local6:b2Bound;
var _local3:int;
while (_local3 < 2) {
_local4 = m_bounds[_local3];
_local5 = _local4[_arg1.lowerBounds[_local3]];
_local6 = _local4[_arg2.upperBounds[_local3]];
if (_local5.value > _local6.value){
return (false);
};
_local5 = _local4[_arg1.upperBounds[_local3]];
_local6 = _local4[_arg2.lowerBounds[_local3]];
if (_local5.value < _local6.value){
return (false);
};
_local3++;
};
return (true);
}
private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{
var _local4:Number = _arg3.lowerBound.x;
var _local5:Number = _arg3.lowerBound.y;
_local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x);
_local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y);
_local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x);
_local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y);
var _local6:Number = _arg3.upperBound.x;
var _local7:Number = _arg3.upperBound.y;
_local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x);
_local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y);
_local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x);
_local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y);
_arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1));
_arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1);
_arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1));
_arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1);
}
public function CreateProxy(_arg1:b2AABB, _arg2):uint{
var _local3:uint;
var _local4:b2Proxy;
var _local11:Array;
var _local12:uint;
var _local13:uint;
var _local14:Array;
var _local15:Array;
var _local16:Array;
var _local17:int;
var _local18:int;
var _local19:b2Bound;
var _local20:b2Bound;
var _local21:b2Bound;
var _local22:int;
var _local23:b2Proxy;
var _local5:uint = m_freeProxy;
_local4 = m_proxyPool[_local5];
m_freeProxy = _local4.GetNext();
_local4.overlapCount = 0;
_local4.userData = _arg2;
var _local6:uint = (2 * m_proxyCount);
var _local7:Array = new Array();
var _local8:Array = new Array();
ComputeBounds(_local7, _local8, _arg1);
var _local9:int;
while (_local9 < 2) {
_local11 = m_bounds[_local9];
_local14 = [_local12];
_local15 = [_local13];
Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9);
_local12 = _local14[0];
_local13 = _local15[0];
_local16 = new Array();
_local18 = (_local6 - _local13);
_local17 = 0;
while (_local17 < _local18) {
_local16[_local17] = new b2Bound();
_local19 = _local16[_local17];
_local20 = _local11[int((_local13 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local18 = _local16.length;
_local22 = (_local13 + 2);
_local17 = 0;
while (_local17 < _local18) {
_local20 = _local16[_local17];
_local19 = _local11[int((_local22 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local16 = new Array();
_local18 = (_local13 - _local12);
_local17 = 0;
while (_local17 < _local18) {
_local16[_local17] = new b2Bound();
_local19 = _local16[_local17];
_local20 = _local11[int((_local12 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local18 = _local16.length;
_local22 = (_local12 + 1);
_local17 = 0;
while (_local17 < _local18) {
_local20 = _local16[_local17];
_local19 = _local11[int((_local22 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local13++;
_local19 = _local11[_local12];
_local20 = _local11[_local13];
_local19.value = _local7[_local9];
_local19.proxyId = _local5;
_local20.value = _local8[_local9];
_local20.proxyId = _local5;
_local21 = _local11[int((_local12 - 1))];
_local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount;
_local21 = _local11[int((_local13 - 1))];
_local20.stabbingCount = _local21.stabbingCount;
_local3 = _local12;
while (_local3 < _local13) {
_local21 = _local11[_local3];
_local21.stabbingCount++;
_local3++;
};
_local3 = _local12;
while (_local3 < (_local6 + 2)) {
_local19 = _local11[_local3];
_local23 = m_proxyPool[_local19.proxyId];
if (_local19.IsLower()){
_local23.lowerBounds[_local9] = _local3;
} else {
_local23.upperBounds[_local9] = _local3;
};
_local3++;
};
_local9++;
};
m_proxyCount++;
var _local10:int;
while (_local10 < m_queryResultCount) {
m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]);
_local10++;
};
m_pairManager.Commit();
m_queryResultCount = 0;
IncrementTimeStamp();
return (_local5);
}
public function DestroyProxy(_arg1:uint):void{
var _local2:b2Bound;
var _local3:b2Bound;
var _local8:Array;
var _local9:uint;
var _local10:uint;
var _local11:uint;
var _local12:uint;
var _local13:Array;
var _local14:int;
var _local15:int;
var _local16:int;
var _local17:uint;
var _local18:int;
var _local19:b2Proxy;
var _local4:b2Proxy = m_proxyPool[_arg1];
var _local5:int = (2 * m_proxyCount);
var _local6:int;
while (_local6 < 2) {
_local8 = m_bounds[_local6];
_local9 = _local4.lowerBounds[_local6];
_local10 = _local4.upperBounds[_local6];
_local2 = _local8[_local9];
_local11 = _local2.value;
_local3 = _local8[_local10];
_local12 = _local3.value;
_local13 = new Array();
_local15 = ((_local10 - _local9) - 1);
_local14 = 0;
while (_local14 < _local15) {
_local13[_local14] = new b2Bound();
_local2 = _local13[_local14];
_local3 = _local8[int(((_local9 + 1) + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = _local13.length;
_local16 = _local9;
_local14 = 0;
while (_local14 < _local15) {
_local3 = _local13[_local14];
_local2 = _local8[int((_local16 + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local13 = new Array();
_local15 = ((_local5 - _local10) - 1);
_local14 = 0;
while (_local14 < _local15) {
_local13[_local14] = new b2Bound();
_local2 = _local13[_local14];
_local3 = _local8[int(((_local10 + 1) + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = _local13.length;
_local16 = (_local10 - 1);
_local14 = 0;
while (_local14 < _local15) {
_local3 = _local13[_local14];
_local2 = _local8[int((_local16 + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = (_local5 - 2);
_local17 = _local9;
while (_local17 < _local15) {
_local2 = _local8[_local17];
_local19 = m_proxyPool[_local2.proxyId];
if (_local2.IsLower()){
_local19.lowerBounds[_local6] = _local17;
} else {
_local19.upperBounds[_local6] = _local17;
};
_local17++;
};
_local15 = (_local10 - 1);
_local18 = _local9;
while (_local18 < _local15) {
_local2 = _local8[_local18];
_local2.stabbingCount--;
_local18++;
};
Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6);
_local6++;
};
var _local7:int;
while (_local7 < m_queryResultCount) {
m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]);
_local7++;
};
m_pairManager.Commit();
m_queryResultCount = 0;
IncrementTimeStamp();
_local4.userData = null;
_local4.overlapCount = b2_invalid;
_local4.lowerBounds[0] = b2_invalid;
_local4.lowerBounds[1] = b2_invalid;
_local4.upperBounds[0] = b2_invalid;
_local4.upperBounds[1] = b2_invalid;
_local4.SetNext(m_freeProxy);
m_freeProxy = _arg1;
m_proxyCount--;
}
public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{
var _local4:Array;
var _local5:b2Bound;
var _local3:int;
while (_local3 < 2) {
_local4 = m_bounds[_local3];
_local5 = _local4[_arg2.upperBounds[_local3]];
if (_arg1.lowerValues[_local3] > _local5.value){
return (false);
};
_local5 = _local4[_arg2.lowerBounds[_local3]];
if (_arg1.upperValues[_local3] < _local5.value){
return (false);
};
_local3++;
};
return (true);
}
public function Validate():void{
var _local1:b2Pair;
var _local2:b2Proxy;
var _local3:b2Proxy;
var _local4:Boolean;
var _local6:b2Bound;
var _local7:uint;
var _local8:uint;
var _local9:uint;
var _local10:b2Bound;
var _local5:int;
while (_local5 < 2) {
_local6 = m_bounds[_local5];
_local7 = (2 * m_proxyCount);
_local8 = 0;
_local9 = 0;
while (_local9 < _local7) {
_local10 = _local6[_local9];
if (_local10.IsLower() == true){
_local8++;
} else {
_local8--;
};
_local9++;
};
_local5++;
};
}
private function IncrementOverlapCount(_arg1:uint):void{
var _local2:b2Proxy = m_proxyPool[_arg1];
if (_local2.timeStamp < m_timeStamp){
_local2.timeStamp = m_timeStamp;
_local2.overlapCount = 1;
} else {
_local2.overlapCount = 2;
m_queryResults[m_queryResultCount] = _arg1;
m_queryResultCount++;
};
}
public function InRange(_arg1:b2AABB):Boolean{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = _arg1.lowerBound.x;
_local3 = _arg1.lowerBound.y;
_local2 = (_local2 - m_worldAABB.upperBound.x);
_local3 = (_local3 - m_worldAABB.upperBound.y);
_local4 = m_worldAABB.lowerBound.x;
_local5 = m_worldAABB.lowerBound.y;
_local4 = (_local4 - _arg1.upperBound.x);
_local5 = (_local5 - _arg1.upperBound.y);
_local2 = b2Math.b2Max(_local2, _local4);
_local3 = b2Math.b2Max(_local3, _local5);
return ((b2Math.b2Max(_local2, _local3) < 0));
}
public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{
var _local3:Array;
var _local4:int;
var _local5:uint;
var _local6:uint;
var _local7:b2Bound;
var _local8:b2Bound;
var _local9:b2Bound;
var _local10:uint;
var _local11:b2Proxy;
var _local16:Array;
var _local17:uint;
var _local18:uint;
var _local19:uint;
var _local20:uint;
var _local21:int;
var _local22:int;
var _local23:uint;
var _local24:b2Proxy;
if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){
return;
};
if (_arg2.IsValid() == false){
return;
};
var _local12:uint = (2 * m_proxyCount);
var _local13:b2Proxy = m_proxyPool[_arg1];
var _local14:b2BoundValues = new b2BoundValues();
ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2);
var _local15:b2BoundValues = new b2BoundValues();
_local5 = 0;
while (_local5 < 2) {
_local7 = m_bounds[_local5][_local13.lowerBounds[_local5]];
_local15.lowerValues[_local5] = _local7.value;
_local7 = m_bounds[_local5][_local13.upperBounds[_local5]];
_local15.upperValues[_local5] = _local7.value;
_local5++;
};
_local5 = 0;
while (_local5 < 2) {
_local16 = m_bounds[_local5];
_local17 = _local13.lowerBounds[_local5];
_local18 = _local13.upperBounds[_local5];
_local19 = _local14.lowerValues[_local5];
_local20 = _local14.upperValues[_local5];
_local7 = _local16[_local17];
_local21 = (_local19 - _local7.value);
_local7.value = _local19;
_local7 = _local16[_local18];
_local22 = (_local20 - _local7.value);
_local7.value = _local20;
if (_local21 < 0){
_local6 = _local17;
while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) {
_local7 = _local16[_local6];
_local8 = _local16[int((_local6 - 1))];
_local23 = _local8.proxyId;
_local24 = m_proxyPool[_local8.proxyId];
_local8.stabbingCount++;
if (_local8.IsUpper() == true){
if (TestOverlap(_local14, _local24)){
m_pairManager.AddBufferedPair(_arg1, _local23);
};
_local3 = _local24.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount++;
} else {
_local3 = _local24.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount--;
};
_local3 = _local13.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.Swap(_local8);
_local6--;
};
};
if (_local22 > 0){
_local6 = _local18;
while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) {
_local7 = _local16[_local6];
_local9 = _local16[int((_local6 + 1))];
_local10 = _local9.proxyId;
_local11 = m_proxyPool[_local10];
_local9.stabbingCount++;
if (_local9.IsLower() == true){
if (TestOverlap(_local14, _local11)){
m_pairManager.AddBufferedPair(_arg1, _local10);
};
_local3 = _local11.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount++;
} else {
_local3 = _local11.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount--;
};
_local3 = _local13.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.Swap(_local9);
_local6++;
};
};
if (_local21 > 0){
_local6 = _local17;
while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) {
_local7 = _local16[_local6];
_local9 = _local16[int((_local6 + 1))];
_local10 = _local9.proxyId;
_local11 = m_proxyPool[_local10];
_local9.stabbingCount--;
if (_local9.IsUpper()){
if (TestOverlap(_local15, _local11)){
m_pairManager.RemoveBufferedPair(_arg1, _local10);
};
_local3 = _local11.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount--;
} else {
_local3 = _local11.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount++;
};
_local3 = _local13.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.Swap(_local9);
_local6++;
};
};
if (_local22 < 0){
_local6 = _local18;
while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) {
_local7 = _local16[_local6];
_local8 = _local16[int((_local6 - 1))];
_local23 = _local8.proxyId;
_local24 = m_proxyPool[_local23];
_local8.stabbingCount--;
if (_local8.IsLower() == true){
if (TestOverlap(_local15, _local24)){
m_pairManager.RemoveBufferedPair(_arg1, _local23);
};
_local3 = _local24.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount--;
} else {
_local3 = _local24.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount++;
};
_local3 = _local13.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.Swap(_local8);
_local6--;
};
};
_local5++;
};
}
public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{
var _local6:int;
var _local7:b2Bound;
var _local4:int;
var _local5:int = (_arg2 - 1);
while (_local4 <= _local5) {
_local6 = ((_local4 + _local5) / 2);
_local7 = _arg1[_local6];
if (_local7.value > _arg3){
_local5 = (_local6 - 1);
} else {
if (_local7.value < _arg3){
_local4 = (_local6 + 1);
} else {
return (uint(_local6));
};
};
};
return (uint(_local4));
}
}
}//package Box2D.Collision
Section 19
//b2BufferedPair (Box2D.Collision.b2BufferedPair)
package Box2D.Collision {
public class b2BufferedPair {
public var proxyId1:uint;
public var proxyId2:uint;
}
}//package Box2D.Collision
Section 20
//b2Collision (Box2D.Collision.b2Collision)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Collision {
public static const b2_nullFeature:uint = 0xFF;
private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2();
public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{
var _local11:b2Mat22;
var _local12:b2Vec2;
var _local25:Number;
var _local6:int = _arg1.m_vertexCount;
var _local7:Array = _arg1.m_vertices;
var _local8:Array = _arg1.m_normals;
var _local9:int = _arg4.m_vertexCount;
var _local10:Array = _arg4.m_vertices;
_local11 = _arg2.R;
_local12 = _local8[_arg3];
var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y));
var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y));
_local11 = _arg5.R;
var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14));
var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14));
var _local17:int;
var _local18:Number = Number.MAX_VALUE;
var _local19:int;
while (_local19 < _local9) {
_local12 = _local10[_local19];
_local25 = ((_local12.x * _local15) + (_local12.y * _local16));
if (_local25 < _local18){
_local18 = _local25;
_local17 = _local19;
};
_local19++;
};
_local12 = _local7[_arg3];
_local11 = _arg2.R;
var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)));
var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)));
_local12 = _local10[_local17];
_local11 = _arg5.R;
var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)));
var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)));
_local22 = (_local22 - _local20);
_local23 = (_local23 - _local21);
var _local24:Number = ((_local22 * _local13) + (_local23 * _local14));
return (_local24);
}
public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{
var _local3:b2Vec2 = _arg2.lowerBound;
var _local4:b2Vec2 = _arg1.upperBound;
var _local5:Number = (_local3.x - _local4.x);
var _local6:Number = (_local3.y - _local4.y);
_local3 = _arg1.lowerBound;
_local4 = _arg2.upperBound;
var _local7:Number = (_local3.x - _local4.x);
var _local8:Number = (_local3.y - _local4.y);
if ((((_local5 > 0)) || ((_local6 > 0)))){
return (false);
};
if ((((_local7 > 0)) || ((_local8 > 0)))){
return (false);
};
return (true);
}
public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{
var _local12:b2Mat22;
var _local13:b2Vec2;
var _local20:ClipVertex;
var _local23:Number;
var _local7:int = _arg2.m_vertexCount;
var _local8:Array = _arg2.m_normals;
var _local9:int = _arg5.m_vertexCount;
var _local10:Array = _arg5.m_vertices;
var _local11:Array = _arg5.m_normals;
_local12 = _arg3.R;
_local13 = _local8[_arg4];
var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y));
var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y));
_local12 = _arg6.R;
var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15));
_local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15));
_local14 = _local16;
var _local17:int;
var _local18:Number = Number.MAX_VALUE;
var _local19:int;
while (_local19 < _local9) {
_local13 = _local11[_local19];
_local23 = ((_local14 * _local13.x) + (_local15 * _local13.y));
if (_local23 < _local18){
_local18 = _local23;
_local17 = _local19;
};
_local19++;
};
var _local21:int = _local17;
var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0;
_local20 = _arg1[0];
_local13 = _local10[_local21];
_local12 = _arg6.R;
_local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)));
_local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)));
_local20.id.features.referenceEdge = _arg4;
_local20.id.features.incidentEdge = _local21;
_local20.id.features.incidentVertex = 0;
_local20 = _arg1[1];
_local13 = _local10[_local22];
_local12 = _arg6.R;
_local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)));
_local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)));
_local20.id.features.referenceEdge = _arg4;
_local20.id.features.incidentEdge = _local22;
_local20.id.features.incidentVertex = 1;
}
public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{
var _local6:ClipVertex;
var _local13:b2PolygonShape;
var _local14:b2PolygonShape;
var _local17:int;
var _local18:uint;
var _local34:int;
var _local37:b2Vec2;
var _local38:Number;
var _local39:b2ManifoldPoint;
_arg1.pointCount = 0;
var _local7:int;
var _local8:Array = [_local7];
var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5);
_local7 = _local8[0];
if (_local9 > 0){
return;
};
var _local10:int;
var _local11:Array = [_local10];
var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3);
_local10 = _local11[0];
if (_local12 > 0){
return;
};
var _local15:b2XForm = new b2XForm();
var _local16:b2XForm = new b2XForm();
var _local19:Number = 0.98;
var _local20:Number = 0.001;
if (_local12 > ((_local19 * _local9) + _local20)){
_local13 = _arg4;
_local14 = _arg2;
_local15.Set(_arg5);
_local16.Set(_arg3);
_local17 = _local10;
_local18 = 1;
} else {
_local13 = _arg2;
_local14 = _arg4;
_local15.Set(_arg3);
_local16.Set(_arg5);
_local17 = _local7;
_local18 = 0;
};
var _local21:Array = [new ClipVertex(), new ClipVertex()];
FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16);
var _local22:int = _local13.m_vertexCount;
var _local23:Array = _local13.m_vertices;
var _local24:b2Vec2 = _local23[_local17];
var _local25:b2Vec2 = _local24.Copy();
if ((_local17 + 1) < _local22){
_local24 = _local23[int((_local17 + 1))];
_local37 = _local24.Copy();
} else {
_local24 = _local23[0];
_local37 = _local24.Copy();
};
var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25);
var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25));
_local27.Normalize();
var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1);
_local25 = b2Math.b2MulX(_local15, _local25);
_local37 = b2Math.b2MulX(_local15, _local37);
var _local29:Number = b2Math.b2Dot(_local28, _local25);
var _local30:Number = -(b2Math.b2Dot(_local27, _local25));
var _local31:Number = b2Math.b2Dot(_local27, _local37);
var _local32:Array = [new ClipVertex(), new ClipVertex()];
var _local33:Array = [new ClipVertex(), new ClipVertex()];
_local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30);
if (_local34 < 2){
return;
};
_local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31);
if (_local34 < 2){
return;
};
_arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy();
var _local35:int;
var _local36:int;
while (_local36 < b2Settings.b2_maxManifoldPoints) {
_local6 = _local33[_local36];
_local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29);
if (_local38 <= 0){
_local39 = _arg1.points[_local35];
_local39.separation = _local38;
_local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v);
_local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v);
_local39.id.key = _local6.id._key;
_local39.id.features.flip = _local18;
_local35++;
};
_local36++;
};
_arg1.pointCount = _local35;
}
public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{
var _local8:b2Vec2;
var _local9:b2Mat22;
var _local22:int;
var _local23:Number;
var _local24:int;
var _local25:Number;
var _local6:int = _arg2.m_vertexCount;
var _local7:Array = _arg2.m_normals;
_local9 = _arg5.R;
_local8 = _arg4.m_centroid;
var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)));
var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)));
_local9 = _arg3.R;
_local8 = _arg2.m_centroid;
_local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))));
_local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))));
var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y));
var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y));
var _local14:int;
var _local15:Number = -(Number.MAX_VALUE);
var _local16:int;
while (_local16 < _local6) {
_local8 = _local7[_local16];
_local25 = ((_local8.x * _local12) + (_local8.y * _local13));
if (_local25 > _local15){
_local15 = _local25;
_local14 = _local16;
};
_local16++;
};
var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5);
if (_local17 > 0){
return (_local17);
};
var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1);
var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5);
if (_local19 > 0){
return (_local19);
};
var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0;
var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5);
if (_local21 > 0){
return (_local21);
};
if ((((_local19 > _local17)) && ((_local19 > _local21)))){
_local24 = -1;
_local22 = _local18;
_local23 = _local19;
} else {
if (_local21 > _local17){
_local24 = 1;
_local22 = _local20;
_local23 = _local21;
} else {
_arg1[0] = _local14;
return (_local17);
};
};
while (true) {
if (_local24 == -1){
_local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1);
} else {
_local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0;
};
_local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5);
if (_local17 > 0){
return (_local17);
};
if (_local17 > _local23){
_local22 = _local14;
_local23 = _local17;
} else {
break;
};
};
_arg1[0] = _local22;
return (_local23);
}
public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{
var _local5:ClipVertex;
var _local6:int;
var _local7:b2Vec2;
var _local8:b2Vec2;
var _local9:Number;
var _local11:Number;
var _local12:b2Vec2;
var _local13:ClipVertex;
_local6 = 0;
_local5 = _arg2[0];
_local7 = _local5.v;
_local5 = _arg2[1];
_local8 = _local5.v;
_local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4);
var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4);
if (_local9 <= 0){
var _temp1 = _local6;
_local6 = (_local6 + 1);
var _local14 = _temp1;
_arg1[_local14] = _arg2[0];
};
if (_local10 <= 0){
var _temp2 = _local6;
_local6 = (_local6 + 1);
_local14 = _temp2;
_arg1[_local14] = _arg2[1];
};
if ((_local9 * _local10) < 0){
_local11 = (_local9 / (_local9 - _local10));
_local5 = _arg1[_local6];
_local12 = _local5.v;
_local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x)));
_local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y)));
_local5 = _arg1[_local6];
if (_local9 > 0){
_local13 = _arg2[0];
_local5.id = _local13.id;
} else {
_local13 = _arg2[1];
_local5.id = _local13.id;
};
_local6++;
};
return (_local6);
}
public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
var _local6:b2Mat22;
var _local7:b2Vec2;
var _local18:Number;
var _local24:Number;
var _local25:Number;
_arg1.pointCount = 0;
_local6 = _arg3.R;
_local7 = _arg2.m_localPosition;
var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)));
var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)));
_local6 = _arg5.R;
_local7 = _arg4.m_localPosition;
var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)));
var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)));
var _local12:Number = (_local10 - _local8);
var _local13:Number = (_local11 - _local9);
var _local14:Number = ((_local12 * _local12) + (_local13 * _local13));
var _local15:Number = _arg2.m_radius;
var _local16:Number = _arg4.m_radius;
var _local17:Number = (_local15 + _local16);
if (_local14 > (_local17 * _local17)){
return;
};
if (_local14 < Number.MIN_VALUE){
_local18 = -(_local17);
_arg1.normal.Set(0, 1);
} else {
_local24 = Math.sqrt(_local14);
_local18 = (_local24 - _local17);
_local25 = (1 / _local24);
_arg1.normal.x = (_local25 * _local12);
_arg1.normal.y = (_local25 * _local13);
};
_arg1.pointCount = 1;
var _local19:b2ManifoldPoint = _arg1.points[0];
_local19.id.key = 0;
_local19.separation = _local18;
_local8 = (_local8 + (_local15 * _arg1.normal.x));
_local9 = (_local9 + (_local15 * _arg1.normal.y));
_local10 = (_local10 - (_local16 * _arg1.normal.x));
_local11 = (_local11 - (_local16 * _arg1.normal.y));
var _local20:Number = (0.5 * (_local8 + _local10));
var _local21:Number = (0.5 * (_local9 + _local11));
var _local22:Number = (_local20 - _arg3.position.x);
var _local23:Number = (_local21 - _arg3.position.y);
_local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y));
_local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y));
_local22 = (_local20 - _arg5.position.x);
_local23 = (_local21 - _arg5.position.y);
_local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y));
_local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y));
}
public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
var _local6:b2ManifoldPoint;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:b2Vec2;
var _local12:b2Mat22;
var _local17:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
_arg1.pointCount = 0;
_local12 = _arg5.R;
_local11 = _arg4.m_localPosition;
var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)));
var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)));
_local7 = (_local13 - _arg3.position.x);
_local8 = (_local14 - _arg3.position.y);
_local12 = _arg3.R;
var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
var _local18:int;
var _local19:Number = -(Number.MAX_VALUE);
var _local20:Number = _arg4.m_radius;
var _local21:int = _arg2.m_vertexCount;
var _local22:Array = _arg2.m_vertices;
var _local23:Array = _arg2.m_normals;
var _local24:int;
while (_local24 < _local21) {
_local11 = _local22[_local24];
_local7 = (_local15 - _local11.x);
_local8 = (_local16 - _local11.y);
_local11 = _local23[_local24];
_local34 = ((_local11.x * _local7) + (_local11.y * _local8));
if (_local34 > _local20){
return;
};
if (_local34 > _local19){
_local19 = _local34;
_local18 = _local24;
};
_local24++;
};
if (_local19 < Number.MIN_VALUE){
_arg1.pointCount = 1;
_local11 = _local23[_local18];
_local12 = _arg3.R;
_arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y));
_arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y));
_local6 = _arg1.points[0];
_local6.id.features.incidentEdge = _local18;
_local6.id.features.incidentVertex = b2_nullFeature;
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
_local9 = (_local13 - (_local20 * _arg1.normal.x));
_local10 = (_local14 - (_local20 * _arg1.normal.y));
_local7 = (_local9 - _arg3.position.x);
_local8 = (_local10 - _arg3.position.y);
_local12 = _arg3.R;
_local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local7 = (_local9 - _arg5.position.x);
_local8 = (_local10 - _arg5.position.y);
_local12 = _arg5.R;
_local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local6.separation = (_local19 - _local20);
return;
};
var _local25:int = _local18;
var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0;
_local11 = _local22[_local25];
var _local27:b2Vec2 = _local22[_local26];
var _local28:Number = (_local27.x - _local11.x);
var _local29:Number = (_local27.y - _local11.y);
var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29)));
_local28 = (_local28 / _local30);
_local29 = (_local29 / _local30);
_local7 = (_local15 - _local11.x);
_local8 = (_local16 - _local11.y);
var _local31:Number = ((_local7 * _local28) + (_local8 * _local29));
_local6 = _arg1.points[0];
if (_local31 <= 0){
_local32 = _local11.x;
_local33 = _local11.y;
_local6.id.features.incidentEdge = b2_nullFeature;
_local6.id.features.incidentVertex = _local25;
} else {
if (_local31 >= _local30){
_local32 = _local27.x;
_local33 = _local27.y;
_local6.id.features.incidentEdge = b2_nullFeature;
_local6.id.features.incidentVertex = _local26;
} else {
_local32 = ((_local28 * _local31) + _local11.x);
_local33 = ((_local29 * _local31) + _local11.y);
_local6.id.features.incidentEdge = _local18;
_local6.id.features.incidentVertex = b2_nullFeature;
};
};
_local7 = (_local15 - _local32);
_local8 = (_local16 - _local33);
_local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local7 = (_local7 / _local17);
_local8 = (_local8 / _local17);
if (_local17 > _local20){
return;
};
_arg1.pointCount = 1;
_local12 = _arg3.R;
_arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8));
_arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8));
_local9 = (_local13 - (_local20 * _arg1.normal.x));
_local10 = (_local14 - (_local20 * _arg1.normal.y));
_local7 = (_local9 - _arg3.position.x);
_local8 = (_local10 - _arg3.position.y);
_local12 = _arg3.R;
_local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local7 = (_local9 - _arg5.position.x);
_local8 = (_local10 - _arg5.position.y);
_local12 = _arg5.R;
_local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local6.separation = (_local17 - _local20);
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
}
}
}//package Box2D.Collision
Section 21
//b2ContactID (Box2D.Collision.b2ContactID)
package Box2D.Collision {
public class b2ContactID {
public var _key:uint;
public var features:Features;
public function b2ContactID(){
features = new Features();
super();
features._m_id = this;
}
public function Set(_arg1:b2ContactID):void{
key = _arg1._key;
}
public function Copy():b2ContactID{
var _local1:b2ContactID = new b2ContactID();
_local1.key = key;
return (_local1);
}
public function set key(_arg1:uint):void{
_key = _arg1;
features._referenceEdge = (_key & 0xFF);
features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF);
features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF);
features._flip = (((_key & 4278190080) >> 24) & 0xFF);
}
public function get key():uint{
return (_key);
}
}
}//package Box2D.Collision
Section 22
//b2ContactPoint (Box2D.Collision.b2ContactPoint)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2ContactPoint {
public var friction:Number;
public var separation:Number;
public var normal:b2Vec2;
public var position:b2Vec2;
public var restitution:Number;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var id:b2ContactID;
public var velocity:b2Vec2;
public function b2ContactPoint(){
position = new b2Vec2();
velocity = new b2Vec2();
normal = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Collision
Section 23
//b2Distance (Box2D.Collision.b2Distance)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Distance {
public static var s_initialized:Boolean = false;
public static var g_GJK_Iterations:int = 0;
private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
public static var s_registers:Array;
private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
private static var gPoint:b2Point = new b2Point();
private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
public static var t:Number = -1;
public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{
var _local7:b2Vec2;
var _local15:Number;
var _local16:Number;
var _local17:b2Vec2;
var _local18:b2Vec2;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:int;
var _local8:Array = s_p1s;
var _local9:Array = s_p2s;
var _local10:Array = s_points;
var _local11:int;
_arg1.SetV(_arg3.GetFirstVertex(_arg4));
_arg2.SetV(_arg5.GetFirstVertex(_arg6));
var _local12:Number = 0;
var _local13 = 20;
var _local14:int;
while (_local14 < _local13) {
_local15 = (_arg2.x - _arg1.x);
_local16 = (_arg2.y - _arg1.y);
_local17 = _arg3.Support(_arg4, _local15, _local16);
_local18 = _arg5.Support(_arg6, -(_local15), -(_local16));
_local12 = ((_local15 * _local15) + (_local16 * _local16));
_local19 = (_local18.x - _local17.x);
_local20 = (_local18.y - _local17.y);
_local21 = ((_local15 * _local19) + (_local16 * _local20));
if ((_local12 - _local21) <= (0.01 * _local12)){
if (_local11 == 0){
_arg1.SetV(_local17);
_arg2.SetV(_local18);
};
g_GJK_Iterations = _local14;
return (Math.sqrt(_local12));
};
switch (_local11){
case 0:
_local7 = _local8[0];
_local7.SetV(_local17);
_local7 = _local9[0];
_local7.SetV(_local18);
_local7 = _local10[0];
_local7.x = _local19;
_local7.y = _local20;
_arg1.SetV(_local8[0]);
_arg2.SetV(_local9[0]);
_local11++;
break;
case 1:
_local7 = _local8[1];
_local7.SetV(_local17);
_local7 = _local9[1];
_local7.SetV(_local18);
_local7 = _local10[1];
_local7.x = _local19;
_local7.y = _local20;
_local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10);
break;
case 2:
_local7 = _local8[2];
_local7.SetV(_local17);
_local7 = _local9[2];
_local7.SetV(_local18);
_local7 = _local10[2];
_local7.x = _local19;
_local7.y = _local20;
_local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10);
break;
};
if (_local11 == 3){
g_GJK_Iterations = _local14;
return (0);
};
_local22 = -(Number.MAX_VALUE);
_local23 = 0;
while (_local23 < _local11) {
_local7 = _local10[_local23];
_local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y)));
_local23++;
};
if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){
g_GJK_Iterations = _local14;
_local15 = (_arg2.x - _arg1.x);
_local16 = (_arg2.y - _arg1.y);
_local12 = ((_local15 * _local15) + (_local16 * _local16));
return (Math.sqrt(_local12));
};
_local14++;
};
g_GJK_Iterations = _local13;
return (Math.sqrt(_local12));
}
public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{
var _local6:b2Vec2;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local4:Number = (100 * Number.MIN_VALUE);
var _local5:int;
while (_local5 < _arg3) {
_local6 = _arg2[_local5];
_local7 = Math.abs((_arg1.x - _local6.x));
_local8 = Math.abs((_arg1.y - _local6.y));
_local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x));
_local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y));
if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){
return (true);
};
_local5++;
};
return (false);
}
public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{
var _local6:b2Vec2;
var _local7:b2Vec2;
var _local8:b2Vec2;
var _local9:b2Vec2;
var _local12:b2Vec2;
var _local13:b2Vec2;
var _local35:Number;
_local6 = _arg5[0];
_local7 = _arg5[1];
_local8 = _arg5[2];
_local9 = _arg3[0];
var _local10:b2Vec2 = _arg3[1];
var _local11:b2Vec2 = _arg3[2];
_local12 = _arg4[0];
_local13 = _arg4[1];
var _local14:b2Vec2 = _arg4[2];
var _local15:Number = _local6.x;
var _local16:Number = _local6.y;
var _local17:Number = _local7.x;
var _local18:Number = _local7.y;
var _local19:Number = _local8.x;
var _local20:Number = _local8.y;
var _local21:Number = (_local17 - _local15);
var _local22:Number = (_local18 - _local16);
var _local23:Number = (_local19 - _local15);
var _local24:Number = (_local20 - _local16);
var _local25:Number = (_local19 - _local17);
var _local26:Number = (_local20 - _local18);
var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22)));
var _local28:Number = ((_local17 * _local21) + (_local18 * _local22));
var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24)));
var _local30:Number = ((_local19 * _local23) + (_local20 * _local24));
var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26)));
var _local32:Number = ((_local19 * _local25) + (_local20 * _local26));
if ((((_local30 <= 0)) && ((_local32 <= 0)))){
_arg1.SetV(_local11);
_arg2.SetV(_local14);
_local9.SetV(_local11);
_local12.SetV(_local14);
_local6.SetV(_local8);
return (1);
};
var _local33:Number = ((_local21 * _local24) - (_local22 * _local23));
var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17)));
var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19)));
if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){
_local35 = (_local31 / (_local31 + _local32));
_arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x)));
_arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y)));
_arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x)));
_arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y)));
_local9.SetV(_local11);
_local12.SetV(_local14);
_local6.SetV(_local8);
return (2);
};
var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15)));
if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){
_local35 = (_local29 / (_local29 + _local30));
_arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x)));
_arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y)));
_arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x)));
_arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y)));
_local10.SetV(_local11);
_local13.SetV(_local14);
_local7.SetV(_local8);
return (2);
};
var _local38:Number = ((_local36 + _local37) + _local34);
_local38 = (1 / _local38);
var _local39:Number = (_local36 * _local38);
var _local40:Number = (_local37 * _local38);
var _local41:Number = ((1 - _local39) - _local40);
_arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x));
_arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y));
_arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x));
_arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y));
return (3);
}
public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{
var _local7:int = _arg3.GetType();
var _local8:int = _arg5.GetType();
var _local9:b2DistanceRegister = s_registers[(_local7 + (_local8 * b2Shape.e_shapeTypeCount))];
if (_local9 != null){
if (_local9.primary){
return (_local9.fcn(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6));
};
return (_local9.fcn(_arg2, _arg1, _arg5, _arg6, _arg3, _arg4));
};
return (0);
}
public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
var _local7:b2Mat22;
var _local8:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local9:b2Point = gPoint;
_local8 = _arg5.m_localPosition;
_local7 = _arg6.R;
_local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
_local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity);
var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
if (_local10 > _local11){
_local10 = (_local10 - _local11);
_local12 = (_arg2.x - _arg1.x);
_local13 = (_arg2.y - _arg1.y);
_local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13)));
_local12 = (_local12 / _local14);
_local13 = (_local13 / _local14);
_arg2.x = (_arg2.x - (_local11 * _local12));
_arg2.y = (_arg2.y - (_local11 * _local13));
} else {
_local10 = 0;
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
};
return (_local10);
}
public static function AddType(_arg1:Function, _arg2:int, _arg3:int):void{
s_registers[(_arg2 + (_arg3 * b2Shape.e_shapeTypeCount))] = new b2DistanceRegister(_arg1, true);
if (_arg2 != _arg3){
s_registers[(_arg3 + (_arg2 * b2Shape.e_shapeTypeCount))] = new b2DistanceRegister(_arg1, false);
};
}
public static function DistanceSeC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2StaticEdgeShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local12:b2ManifoldPoint;
var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
var _local13:b2Mat22 = _arg6.R;
var _local14:b2Vec2 = _arg5.m_localPosition;
var _local15:Number = (_arg6.position.x + ((_local13.col1.x * _local14.x) + (_local13.col2.x * _local14.y)));
var _local16:Number = (_arg6.position.y + ((_local13.col1.y * _local14.x) + (_local13.col2.y * _local14.y)));
_local14 = _arg3.m_direction;
var _local17:Number = (((_local15 - _arg3.m_coreV1.x) * _local14.x) + ((_local16 - _arg3.m_coreV1.y) * _local14.y));
if (_local17 <= 0){
_arg1.SetV(_arg3.m_coreV1);
_local7 = (_local15 - _arg3.m_coreV1.x);
_local8 = (_local16 - _arg3.m_coreV1.y);
_local9 = ((_local7 * _local7) + (_local8 * _local8));
if (_local9 > (_local11 * _local11)){
_local10 = Math.sqrt(_local9);
_local7 = (_local7 / _local10);
_local8 = (_local8 / _local10);
_arg2.x = (_local15 - (_local7 * _local11));
_arg2.y = (_local16 - (_local8 * _local11));
return ((_local10 - _local11));
};
_arg2.SetV(_arg3.m_coreV1);
return (0);
} else {
if (_local17 >= _arg3.m_length){
_arg1.SetV(_arg3.m_coreV2);
_local7 = (_local15 - _arg3.m_coreV2.x);
_local8 = (_local16 - _arg3.m_coreV2.y);
_local9 = ((_local7 * _local7) + (_local8 * _local8));
if (_local9 > (_local11 * _local11)){
_local10 = Math.sqrt(_local9);
_local7 = (_local7 / _local10);
_local8 = (_local8 / _local10);
_arg2.x = (_local15 - (_local7 * _local11));
_arg2.y = (_local16 - (_local8 * _local11));
return ((_local10 - _local11));
};
_arg2.SetV(_arg3.m_coreV2);
return (0);
//unresolved jump
};
_arg1.x = (_arg3.m_coreV1.x + (_local14.x * _local17));
_arg1.y = (_arg3.m_coreV1.y + (_local14.y * _local17));
_local14 = _arg3.m_normal;
_local10 = (((_local15 - _arg3.m_coreV1.x) * _local14.x) + ((_local16 - _arg3.m_coreV1.y) * _local14.y));
if (_local10 < 0){
if (_local10 < -(_local11)){
_arg2.x = (_local15 + (_local11 * _local14.x));
_arg2.y = (_local16 + (_local11 * _local14.y));
return ((-(_local10) - _local11));
};
_arg2.SetV(_arg1);
return (0);
//unresolved jump
};
//unresolved if
_arg2.x = (_local15 - (_local11 * _local14.x));
};
_arg2.y = (_local16 - (_local11 * _local14.y));
return ((_local10 - _local11));
_arg2.SetV(_arg1);
return (0);
}
public static function DistanceCcaC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2ConcaveArcShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
var _local7:b2Mat22;
var _local8:b2Vec2;
var _local15:b2Vec2;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local9:b2Point = gPoint;
_local8 = _arg5.m_localPosition;
_local7 = _arg6.R;
_local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
_local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity);
var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
var _local12:b2Vec2 = b2Math.b2MulX(_arg4, _arg3.m_coreVertices[0]);
var _local13:b2Vec2 = b2Math.b2MulMV(_arg4.R, _arg3.m_normals[0]);
var _local14:Number = (((_arg1.x - _local12.x) * _local13.x) + ((_arg1.y - _local12.y) * _local13.y));
if (_local14 >= 0){
_local15 = b2Math.b2MulX(_arg4, _arg3.m_arcCenter);
_local16 = (_local9.p.x - _local15.x);
_local17 = (_local9.p.y - _local15.y);
_local18 = ((-(_local13.y) * _local16) + (_local13.x * _local17));
if (((_local16 * _local13.x) + (_local17 * _local13.y)) > 0){
if (_local18 < 0){
_local8 = _local12;
} else {
_local8 = b2Math.b2MulX(_arg4, _arg3.m_coreVertices[1]);
};
} else {
if (_local18 <= -(_arg3.m_norm)){
_local8 = _local12;
} else {
if (_local18 >= _arg3.m_norm){
_local8 = b2Math.b2MulX(_arg4, _arg3.m_coreVertices[1]);
} else {
_local19 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17)));
_local10 = (((_arg3.m_radius + (b2Settings.b2_toiSlop * 2)) - _local11) - _local19);
_local16 = (_local16 / _local19);
_local17 = (_local17 / _local19);
if (_local10 < 0){
_local10 = 0;
};
_arg1.x = (_local15.x + (_local16 * (_arg3.m_radius + b2Settings.b2_toiSlop)));
_arg1.y = (_local15.y + (_local17 * (_arg3.m_radius + b2Settings.b2_toiSlop)));
_arg2.x = (_arg2.x + (_local16 * _local11));
_arg2.y = (_arg2.y + (_local17 * _local11));
return (_local10);
};
};
};
_arg1.SetV(_local8);
_local8.x = (_local8.x - _local9.p.x);
_local8.y = (_local8.y - _local9.p.y);
_local10 = (_local8.Normalize() - _local11);
if (_local10 > 0){
_arg2.x = (_arg2.x + (_local11 * _local8.x));
_arg2.y = (_arg2.y + (_local11 * _local8.y));
return (_local10);
};
_arg2.SetV(_arg1);
return (0);
};
if (_local10 > _local11){
_local10 = (_local10 - _local11);
_local20 = (_arg2.x - _arg1.x);
_local21 = (_arg2.y - _arg1.y);
_local22 = Math.sqrt(((_local20 * _local20) + (_local21 * _local21)));
_local20 = (_local20 / _local22);
_local21 = (_local21 / _local22);
_arg2.x = (_arg2.x - (_local11 * _local20));
_arg2.y = (_arg2.y - (_local11 * _local21));
} else {
_local10 = 0;
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
};
return (_local10);
}
public static function InitializeRegisters():void{
if (s_initialized == true){
return;
};
s_initialized = true;
s_registers = new Array((b2Shape.e_shapeTypeCount * b2Shape.e_shapeTypeCount));
AddType(b2Distance.DistanceCC, b2Shape.e_circleShape, b2Shape.e_circleShape);
AddType(b2Distance.DistancePC, b2Shape.e_polygonShape, b2Shape.e_circleShape);
AddType(b2Distance.DistanceGeneric, b2Shape.e_polygonShape, b2Shape.e_polygonShape);
AddType(b2Distance.DistanceCcaC, b2Shape.e_concaveArcShape, b2Shape.e_circleShape);
AddType(b2Distance.DistancePCca, b2Shape.e_polygonShape, b2Shape.e_concaveArcShape);
AddType(b2Distance.DistanceSeC, b2Shape.e_staticEdgeShape, b2Shape.e_circleShape);
AddType(b2Distance.DistanceGeneric, b2Shape.e_polygonShape, b2Shape.e_staticEdgeShape);
}
public static function DistancePCca(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2ConcaveArcShape, _arg6:b2XForm):Number{
var _local19:Number;
var _local20:Number;
var _local26:Number;
t = -1;
var _local7:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
var _local8:b2Vec2 = b2Math.b2MulX(_arg6, _arg5.m_coreVertices[0]);
var _local9:b2Vec2 = b2Math.b2MulMV(_arg6.R, _arg5.m_normals[0]);
var _local10:Number = (((_arg2.x - _local8.x) * _local9.x) + ((_arg2.y - _local8.y) * _local9.y));
if ((((_local10 < (-(b2Settings.b2_linearSlop) / 4))) && ((_local7 > 0)))){
t = 0;
return (_local7);
};
var _local11:b2Vec2 = b2Math.b2MulX(_arg6, _arg5.m_coreVertices[1]);
var _local12:b2Vec2 = new b2Vec2();
var _local13:Number = (b2Settings.b2_linearSlop * b2Settings.b2_linearSlop);
_local12.x = (_local8.x - _arg2.x);
_local12.y = (_local8.y - _arg2.y);
if (((_local12.x * _local12.x) + (_local12.y * _local12.y)) < _local13){
t = 1;
return (_local7);
};
_local12.x = (_local11.x - _arg2.x);
_local12.y = (_local11.y - _arg2.y);
if (((_local12.x * _local12.x) + (_local12.y * _local12.y)) < _local13){
t = 2;
return (_local7);
};
var _local14:b2Vec2 = b2Math.b2MulXT(_arg4, b2Math.b2MulX(_arg6, _arg5.m_arcCenter));
var _local15:b2Vec2 = b2Math.b2MulTMV(_arg4.R, _local9);
var _local16:Number = -1;
var _local17:Number = -1;
var _local18:Number = Number.MAX_VALUE;
var _local21:Number = 0;
while (_local21 < _arg3.m_vertexCount) {
_local12.x = (_arg3.m_coreVertices[_local21].x - _local14.x);
_local12.y = (_arg3.m_coreVertices[_local21].y - _local14.y);
_local26 = ((_local12.x * _local15.y) - (_local12.y * _local15.x));
_local19 = ((_local12.x * _local12.x) + (_local12.y * _local12.y));
if (((((_local26 * _local26) < ((_arg5.m_norm * _arg5.m_norm) * _local19))) && ((((_local12.x * _local15.x) + (_local12.y * _local15.y)) < 0)))){
if (_local19 > _local16){
_local16 = _local19;
_local17 = _local21;
_local20 = Math.sqrt(_local19);
_local18 = ((_arg5.m_radius + b2Settings.b2_toiSlop) - _local20);
if (_local18 < 0){
_local18 = 0;
};
_arg1.SetV(b2Math.b2MulX(_arg4, _arg3.m_coreVertices[_local21]));
_local12.x = (_local12.x * ((_arg5.m_radius + b2Settings.b2_toiSlop) / _local20));
_local12.y = (_local12.y * ((_arg5.m_radius + b2Settings.b2_toiSlop) / _local20));
_local12.x = (_local12.x + _local14.x);
_local12.y = (_local12.y + _local14.y);
_arg2.SetV(b2Math.b2MulX(_arg4, _local12));
t = 3;
};
};
_local21++;
};
var _local22:b2Vec2 = new b2Vec2();
var _local23:b2Vec2 = new b2Vec2();
var _local24:b2Point = gPoint;
_local24.p.SetV(_local8);
var _local25:Number = DistanceGeneric(_local22, _local23, _arg3, _arg4, _local24, b2Math.b2XForm_identity);
if (_local25 < _local18){
t = 4;
_local18 = _local25;
_arg1.SetV(_local22);
_arg2.SetV(_local23);
};
_local24.p.SetV(_local11);
_local25 = DistanceGeneric(_local22, _local23, _arg3, _arg4, _local24, b2Math.b2XForm_identity);
if (_local25 < _local18){
t = 5;
_local18 = _local25;
_arg1.SetV(_local22);
_arg2.SetV(_local23);
};
return (_local18);
}
public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
var _local7:b2Mat22;
var _local8:b2Vec2;
var _local19:Number;
var _local20:Number;
_local7 = _arg4.R;
_local8 = _arg3.m_localPosition;
var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
_local7 = _arg6.R;
_local8 = _arg5.m_localPosition;
var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
var _local13:Number = (_local11 - _local9);
var _local14:Number = (_local12 - _local10);
var _local15:Number = ((_local13 * _local13) + (_local14 * _local14));
var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop);
var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
var _local18:Number = (_local16 + _local17);
if (_local15 > (_local18 * _local18)){
_local19 = Math.sqrt(_local15);
_local13 = (_local13 / _local19);
_local14 = (_local14 / _local19);
_local20 = (_local19 - _local18);
_arg1.x = (_local9 + (_local16 * _local13));
_arg1.y = (_local10 + (_local16 * _local14));
_arg2.x = (_local11 - (_local17 * _local13));
_arg2.y = (_local12 - (_local17 * _local14));
return (_local20);
};
if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){
_local19 = Math.sqrt(_local15);
_local13 = (_local13 / _local19);
_local14 = (_local14 / _local19);
_arg1.x = (_local9 + (_local16 * _local13));
_arg1.y = (_local10 + (_local16 * _local14));
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
return (0);
};
_arg1.x = _local9;
_arg1.y = _local10;
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
return (0);
}
public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local6:b2Vec2 = _arg5[0];
var _local7:b2Vec2 = _arg5[1];
var _local8:b2Vec2 = _arg3[0];
_local9 = _arg3[1];
_local10 = _arg4[0];
var _local11:b2Vec2 = _arg4[1];
var _local12:Number = -(_local7.x);
var _local13:Number = -(_local7.y);
var _local14:Number = (_local6.x - _local7.x);
var _local15:Number = (_local6.y - _local7.y);
var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15)));
_local14 = (_local14 / _local16);
_local15 = (_local15 / _local16);
var _local17:Number = ((_local12 * _local14) + (_local13 * _local15));
if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){
_arg1.SetV(_local9);
_arg2.SetV(_local11);
_local8.SetV(_local9);
_local10.SetV(_local11);
_local6.SetV(_local7);
return (1);
};
_local17 = (_local17 / _local16);
_arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x)));
_arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y)));
_arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x)));
_arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y)));
return (2);
}
}
}//package Box2D.Collision
Section 24
//b2DistanceRegister (Box2D.Collision.b2DistanceRegister)
package Box2D.Collision {
public class b2DistanceRegister {
public var fcn:Function;
public var primary:Boolean;
public function b2DistanceRegister(_arg1:Function, _arg2:Boolean){
this.fcn = _arg1;
this.primary = _arg2;
}
}
}//package Box2D.Collision
Section 25
//b2Manifold (Box2D.Collision.b2Manifold)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2Manifold {
public var pointCount:int;// = 0
public var normal:b2Vec2;
public var points:Array;
public function b2Manifold(){
points = new Array(b2Settings.b2_maxManifoldPoints);
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
points[_local1] = new b2ManifoldPoint();
_local1++;
};
normal = new b2Vec2();
}
public function Set(_arg1:b2Manifold):void{
pointCount = _arg1.pointCount;
var _local2:int;
while (_local2 < b2Settings.b2_maxManifoldPoints) {
(points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]);
_local2++;
};
normal.SetV(_arg1.normal);
}
public function Reset():void{
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
(points[_local1] as b2ManifoldPoint).Reset();
_local1++;
};
normal.SetZero();
pointCount = 0;
}
}
}//package Box2D.Collision
Section 26
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2ManifoldPoint {
public var separation:Number;
public var localPoint2:b2Vec2;
public var normalImpulse:Number;
public var tangentImpulse:Number;
public var localPoint1:b2Vec2;
public var id:b2ContactID;
public function b2ManifoldPoint(){
localPoint1 = new b2Vec2();
localPoint2 = new b2Vec2();
id = new b2ContactID();
super();
}
public function Set(_arg1:b2ManifoldPoint):void{
localPoint1.SetV(_arg1.localPoint1);
localPoint2.SetV(_arg1.localPoint2);
separation = _arg1.separation;
normalImpulse = _arg1.normalImpulse;
tangentImpulse = _arg1.tangentImpulse;
id.key = _arg1.id.key;
}
public function Reset():void{
localPoint1.SetZero();
localPoint2.SetZero();
separation = 0;
normalImpulse = 0;
tangentImpulse = 0;
id.key = 0;
}
}
}//package Box2D.Collision
Section 27
//b2OBB (Box2D.Collision.b2OBB)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2OBB {
public var R:b2Mat22;
public var center:b2Vec2;
public var extents:b2Vec2;
public function b2OBB(){
R = new b2Mat22();
center = new b2Vec2();
extents = new b2Vec2();
super();
}
}
}//package Box2D.Collision
Section 28
//b2Pair (Box2D.Collision.b2Pair)
package Box2D.Collision {
import Box2D.Common.*;
public class b2Pair {
public var proxyId1:uint;
public var userData;// = null
public var proxyId2:uint;
public var status:uint;
public var next:uint;
public static var e_pairFinal:uint = 4;
public static var b2_tableMask:int = (b2_tableCapacity - 1);
public static var e_pairRemoved:uint = 2;
public static var b2_nullPair:uint = b2Settings.USHRT_MAX;
public static var e_pairBuffered:uint = 1;
public static var b2_nullProxy:uint = b2Settings.USHRT_MAX;
public static var b2_tableCapacity:int = b2Settings.b2_maxPairs;
public function SetBuffered():void{
status = (status | e_pairBuffered);
}
public function IsBuffered():Boolean{
return (((status & e_pairBuffered) == e_pairBuffered));
}
public function IsFinal():Boolean{
return (((status & e_pairFinal) == e_pairFinal));
}
public function ClearRemoved():void{
status = (status & ~(e_pairRemoved));
}
public function SetFinal():void{
status = (status | e_pairFinal);
}
public function IsRemoved():Boolean{
return (((status & e_pairRemoved) == e_pairRemoved));
}
public function ClearBuffered():void{
status = (status & ~(e_pairBuffered));
}
public function SetRemoved():void{
status = (status | e_pairRemoved);
}
}
}//package Box2D.Collision
Section 29
//b2PairCallback (Box2D.Collision.b2PairCallback)
package Box2D.Collision {
public class b2PairCallback {
public function PairRemoved(_arg1, _arg2, _arg3):void{
}
public function PairAdded(_arg1, _arg2){
return (null);
}
}
}//package Box2D.Collision
Section 30
//b2PairManager (Box2D.Collision.b2PairManager)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2PairManager {
public var m_pairCount:int;
public var m_pairBuffer:Array;
public var m_hashTable:Array;
public var m_callback:b2PairCallback;
public var m_pairs:Array;
public var m_pairBufferCount:int;
public var m_broadPhase:b2BroadPhase;
public var m_freePair:uint;
public function b2PairManager(){
var _local1:uint;
super();
m_hashTable = new Array(b2Pair.b2_tableCapacity);
_local1 = 0;
while (_local1 < b2Pair.b2_tableCapacity) {
m_hashTable[_local1] = b2Pair.b2_nullPair;
_local1++;
};
m_pairs = new Array(b2Settings.b2_maxPairs);
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairs[_local1] = new b2Pair();
_local1++;
};
m_pairBuffer = new Array(b2Settings.b2_maxPairs);
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairBuffer[_local1] = new b2BufferedPair();
_local1++;
};
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy;
m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy;
m_pairs[_local1].userData = null;
m_pairs[_local1].status = 0;
m_pairs[_local1].next = (_local1 + 1);
_local1++;
};
m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair;
m_pairCount = 0;
m_pairBufferCount = 0;
}
private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{
var _local4:b2Pair;
var _local5:uint = m_hashTable[_arg3];
_local4 = m_pairs[_local5];
while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) {
_local5 = _local4.next;
_local4 = m_pairs[_local5];
};
if (_local5 == b2Pair.b2_nullPair){
return (null);
};
return (_local4);
}
private function Find(_arg1:uint, _arg2:uint):b2Pair{
var _local4:uint;
if (_arg1 > _arg2){
_local4 = _arg1;
_arg1 = _arg2;
_arg2 = _local4;
};
var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
return (FindHash(_arg1, _arg2, _local3));
}
private function ValidateBuffer():void{
}
public function Commit():void{
var _local1:b2BufferedPair;
var _local2:int;
var _local5:b2Pair;
var _local6:b2Proxy;
var _local7:b2Proxy;
var _local3:int;
var _local4:Array = m_broadPhase.m_proxyPool;
_local2 = 0;
while (_local2 < m_pairBufferCount) {
_local1 = m_pairBuffer[_local2];
_local5 = Find(_local1.proxyId1, _local1.proxyId2);
_local5.ClearBuffered();
_local6 = _local4[_local5.proxyId1];
_local7 = _local4[_local5.proxyId2];
if (_local5.IsRemoved()){
if (_local5.IsFinal() == true){
m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData);
};
_local1 = m_pairBuffer[_local3];
_local1.proxyId1 = _local5.proxyId1;
_local1.proxyId2 = _local5.proxyId2;
_local3++;
} else {
if (_local5.IsFinal() == false){
_local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData);
_local5.SetFinal();
};
};
_local2++;
};
_local2 = 0;
while (_local2 < _local3) {
_local1 = m_pairBuffer[_local2];
RemovePair(_local1.proxyId1, _local1.proxyId2);
_local2++;
};
m_pairBufferCount = 0;
if (b2BroadPhase.s_validate){
ValidateTable();
};
}
public function RemoveBufferedPair(_arg1:int, _arg2:int):void{
var _local3:b2BufferedPair;
var _local4:b2Pair = Find(_arg1, _arg2);
if (_local4 == null){
return;
};
if (_local4.IsBuffered() == false){
_local4.SetBuffered();
_local3 = m_pairBuffer[m_pairBufferCount];
_local3.proxyId1 = _local4.proxyId1;
_local3.proxyId2 = _local4.proxyId2;
m_pairBufferCount++;
};
_local4.SetRemoved();
if (b2BroadPhase.s_validate){
ValidateBuffer();
};
}
private function RemovePair(_arg1:uint, _arg2:uint){
var _local3:b2Pair;
var _local7:uint;
var _local8:uint;
var _local9:*;
if (_arg1 > _arg2){
_local7 = _arg1;
_arg1 = _arg2;
_arg2 = _local7;
};
var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
var _local5:uint = m_hashTable[_local4];
var _local6:b2Pair;
while (_local5 != b2Pair.b2_nullPair) {
if (Equals(m_pairs[_local5], _arg1, _arg2)){
_local8 = _local5;
_local3 = m_pairs[_local5];
if (_local6){
_local6.next = _local3.next;
} else {
m_hashTable[_local4] = _local3.next;
};
_local3 = m_pairs[_local8];
_local9 = _local3.userData;
_local3.next = m_freePair;
_local3.proxyId1 = b2Pair.b2_nullProxy;
_local3.proxyId2 = b2Pair.b2_nullProxy;
_local3.userData = null;
_local3.status = 0;
m_freePair = _local8;
m_pairCount--;
return (_local9);
} else {
_local6 = m_pairs[_local5];
_local5 = _local6.next;
};
};
return (null);
}
public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{
m_broadPhase = _arg1;
m_callback = _arg2;
}
public function AddBufferedPair(_arg1:int, _arg2:int):void{
var _local3:b2BufferedPair;
var _local4:b2Pair = AddPair(_arg1, _arg2);
if (_local4.IsBuffered() == false){
_local4.SetBuffered();
_local3 = m_pairBuffer[m_pairBufferCount];
_local3.proxyId1 = _local4.proxyId1;
_local3.proxyId2 = _local4.proxyId2;
m_pairBufferCount++;
};
_local4.ClearRemoved();
if (b2BroadPhase.s_validate){
ValidateBuffer();
};
}
private function AddPair(_arg1:uint, _arg2:uint):b2Pair{
var _local6:uint;
if (_arg1 > _arg2){
_local6 = _arg1;
_arg1 = _arg2;
_arg2 = _local6;
};
var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
var _local4 = FindHash(_arg1, _arg2, _local3);
if (_local4 != null){
return (_local4);
};
var _local5:uint = m_freePair;
_local4 = m_pairs[_local5];
m_freePair = _local4.next;
_local4.proxyId1 = _arg1;
_local4.proxyId2 = _arg2;
_local4.status = 0;
_local4.userData = null;
_local4.next = m_hashTable[_local3];
m_hashTable[_local3] = _local5;
m_pairCount++;
return (_local4);
}
private function ValidateTable():void{
}
public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{
return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2))));
}
public static function Hash(_arg1:uint, _arg2:uint):uint{
var _local3:uint = (((_arg2 << 16) & 4294901760) | _arg1);
_local3 = (~(_local3) + ((_local3 << 15) & 4294934528));
_local3 = (_local3 ^ ((_local3 >> 12) & 1048575));
_local3 = (_local3 + ((_local3 << 2) & 4294967292));
_local3 = (_local3 ^ ((_local3 >> 4) & 268435455));
_local3 = (_local3 * 2057);
_local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF));
return (_local3);
}
public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{
return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3))));
}
}
}//package Box2D.Collision
Section 31
//b2Point (Box2D.Collision.b2Point)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2Point {
public var p:b2Vec2;
public function b2Point(){
p = new b2Vec2();
super();
}
public function GetFirstVertex(_arg1:b2XForm):b2Vec2{
return (p);
}
public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
return (p);
}
}
}//package Box2D.Collision
Section 32
//b2Proxy (Box2D.Collision.b2Proxy)
package Box2D.Collision {
public class b2Proxy {
public var overlapCount:uint;
public var userData;// = null
public var lowerBounds:Array;
public var upperBounds:Array;
public var timeStamp:uint;
public function b2Proxy(){
lowerBounds = [uint(0), uint(0)];
upperBounds = [uint(0), uint(0)];
super();
}
public function GetNext():uint{
return (lowerBounds[0]);
}
public function IsValid():Boolean{
return (!((overlapCount == b2BroadPhase.b2_invalid)));
}
public function SetNext(_arg1:uint):void{
lowerBounds[0] = (_arg1 & 0xFFFF);
}
}
}//package Box2D.Collision
Section 33
//b2Segment (Box2D.Collision.b2Segment)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2Segment {
public var p1:b2Vec2;
public var p2:b2Vec2;
public function b2Segment(){
p1 = new b2Vec2();
p2 = new b2Vec2();
super();
}
public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local5:b2Vec2 = _arg3.p1;
var _local6:Number = (_arg3.p2.x - _local5.x);
var _local7:Number = (_arg3.p2.y - _local5.y);
var _local8:Number = (p2.x - p1.x);
var _local9:Number = (p2.y - p1.y);
var _local10:Number = _local9;
var _local11:Number = -(_local8);
var _local12:Number = (100 * Number.MIN_VALUE);
var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11)));
if (_local13 > _local12){
_local14 = (_local5.x - p1.x);
_local15 = (_local5.y - p1.y);
_local16 = ((_local14 * _local10) + (_local15 * _local11));
if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){
_local17 = ((-(_local6) * _local15) + (_local7 * _local14));
if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){
_local16 = (_local16 / _local13);
_local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
_local10 = (_local10 / _local18);
_local11 = (_local11 / _local18);
_arg1[0] = _local16;
_arg2.Set(_local10, _local11);
return (true);
};
};
};
return (false);
}
}
}//package Box2D.Collision
Section 34
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2TimeOfImpact {
public static var s_xf1:b2XForm = new b2XForm();
public static var s_xf2:b2XForm = new b2XForm();
public static var s_p1:b2Vec2 = new b2Vec2();
public static var s_p2:b2Vec2 = new b2Vec2();
public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{
var _local5:Number;
var _local6:Number;
var _local25:Number;
var _local26:b2XForm;
var _local27:b2XForm;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local7:Number = _arg1.m_sweepRadius;
var _local8:Number = _arg3.m_sweepRadius;
var _local9:Number = _arg2.t0;
var _local10:Number = (_arg2.c.x - _arg2.c0.x);
var _local11:Number = (_arg2.c.y - _arg2.c0.y);
var _local12:Number = (_arg4.c.x - _arg4.c0.x);
var _local13:Number = (_arg4.c.y - _arg4.c0.y);
var _local14:Number = (_arg2.a - _arg2.a0);
var _local15:Number = (_arg4.a - _arg4.a0);
var _local16:Number = 0;
var _local17:b2Vec2 = s_p1;
var _local18:b2Vec2 = s_p2;
var _local19 = 20;
var _local20:int;
var _local21:Number = 0;
var _local22:Number = 0;
var _local23:Number = 0;
var _local24:Number = 0;
while (true) {
_local25 = (((1 - _local16) * _local9) + _local16);
_local26 = s_xf1;
_local27 = s_xf2;
_arg2.GetXForm(_local26, _local25);
_arg4.GetXForm(_local27, _local25);
_local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27);
if (_local20 == 0){
if (_local23 > (2 * b2Settings.b2_toiSlop)){
_local24 = (1.5 * b2Settings.b2_toiSlop);
} else {
_local5 = (0.05 * b2Settings.b2_toiSlop);
_local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop));
_local24 = ((_local5 > _local6)) ? _local5 : _local6;
};
};
if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){
break;
};
_local21 = (_local18.x - _local17.x);
_local22 = (_local18.y - _local17.y);
_local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22)));
_local21 = (_local21 / _local28);
_local22 = (_local22 / _local28);
_local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8));
if (_local29 == 0){
_local16 = 1;
break;
};
_local30 = ((_local23 - _local24) / _local29);
_local31 = (_local16 + _local30);
if ((((_local31 < 0)) || ((1 < _local31)))){
_local16 = 1;
break;
};
if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){
break;
};
_local16 = _local31;
_local20++;
};
return (_local16);
}
}
}//package Box2D.Collision
Section 35
//ClipVertex (Box2D.Collision.ClipVertex)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class ClipVertex {
public var id:b2ContactID;
public var v:b2Vec2;
public function ClipVertex(){
v = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Collision
Section 36
//Features (Box2D.Collision.Features)
package Box2D.Collision {
public class Features {
public var _referenceEdge:int;
public var _incidentEdge:int;
public var _flip:int;
public var _incidentVertex:int;
public var _m_id:b2ContactID;
public function get referenceEdge():int{
return (_referenceEdge);
}
public function set incidentVertex(_arg1:int):void{
_incidentVertex = _arg1;
_m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000));
}
public function get flip():int{
return (_flip);
}
public function get incidentEdge():int{
return (_incidentEdge);
}
public function set referenceEdge(_arg1:int):void{
_referenceEdge = _arg1;
_m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF));
}
public function get incidentVertex():int{
return (_incidentVertex);
}
public function set flip(_arg1:int):void{
_flip = _arg1;
_m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080));
}
public function set incidentEdge(_arg1:int):void{
_incidentEdge = _arg1;
_m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00));
}
}
}//package Box2D.Collision
Section 37
//b2Mat22 (Box2D.Common.Math.b2Mat22)
package Box2D.Common.Math {
public class b2Mat22 {
public var col1:b2Vec2;
public var col2:b2Vec2;
public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){
var _local4:Number;
var _local5:Number;
col1 = new b2Vec2();
col2 = new b2Vec2();
super();
if (((!((_arg2 == null))) && (!((_arg3 == null))))){
col1.SetV(_arg2);
col2.SetV(_arg3);
} else {
_local4 = Math.cos(_arg1);
_local5 = Math.sin(_arg1);
col1.x = _local4;
col2.x = -(_local5);
col1.y = _local5;
col2.y = _local4;
};
}
public function SetIdentity():void{
col1.x = 1;
col2.x = 0;
col1.y = 0;
col2.y = 1;
}
public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{
col1.SetV(_arg1);
col2.SetV(_arg2);
}
public function Set(_arg1:Number):void{
var _local2:Number;
_local2 = Math.cos(_arg1);
var _local3:Number = Math.sin(_arg1);
col1.x = _local2;
col2.x = -(_local3);
col1.y = _local3;
col2.y = _local2;
}
public function SetZero():void{
col1.x = 0;
col2.x = 0;
col1.y = 0;
col2.y = 0;
}
public function SetM(_arg1:b2Mat22):void{
col1.SetV(_arg1.col1);
col2.SetV(_arg1.col2);
}
public function AddM(_arg1:b2Mat22):void{
col1.x = (col1.x + _arg1.col1.x);
col1.y = (col1.y + _arg1.col1.y);
col2.x = (col2.x + _arg1.col2.x);
col2.y = (col2.y + _arg1.col2.y);
}
public function Abs():void{
col1.Abs();
col2.Abs();
}
public function Copy():b2Mat22{
return (new b2Mat22(0, col1, col2));
}
public function Invert(_arg1:b2Mat22):b2Mat22{
var _local2:Number;
var _local4:Number;
var _local6:Number;
_local2 = col1.x;
var _local3:Number = col2.x;
_local4 = col1.y;
var _local5:Number = col2.y;
_local6 = ((_local2 * _local5) - (_local3 * _local4));
_local6 = (1 / _local6);
_arg1.col1.x = (_local6 * _local5);
_arg1.col2.x = (-(_local6) * _local3);
_arg1.col1.y = (-(_local6) * _local4);
_arg1.col2.y = (_local6 * _local2);
return (_arg1);
}
public function GetAngle():Number{
return (Math.atan2(col1.y, col1.x));
}
public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{
var _local4:Number = col1.x;
var _local5:Number = col2.x;
var _local6:Number = col1.y;
var _local7:Number = col2.y;
var _local8:Number = ((_local4 * _local7) - (_local5 * _local6));
_local8 = (1 / _local8);
_arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3)));
_arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2)));
return (_arg1);
}
}
}//package Box2D.Common.Math
Section 38
//b2Math (Box2D.Common.Math.b2Math)
package Box2D.Common.Math {
public class b2Math {
public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1));
public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity);
public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0);
public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x));
return (_local3);
}
public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y));
return (_local3);
}
public static function b2IsValid(_arg1:Number):Boolean{
return (isFinite(_arg1));
}
public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y));
return (_local3);
}
public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2;
_local3 = b2MulMV(_arg1.R, _arg2);
_local3.x = (_local3.x + _arg1.position.x);
_local3.y = (_local3.y + _arg1.position.y);
return (_local3);
}
public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{
var _local3:Number = (_arg1.x - _arg2.x);
var _local4:Number = (_arg1.y - _arg2.y);
return (((_local3 * _local3) + (_local4 * _local4)));
}
public static function b2Swap(_arg1:Array, _arg2:Array):void{
var _local3:* = _arg1[0];
_arg1[0] = _arg2[0];
_arg2[0] = _local3;
}
public static function b2AbsM(_arg1:b2Mat22):b2Mat22{
var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2));
return (_local2);
}
public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y));
return (_local3);
}
public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2;
var _local4:Number;
_local3 = SubtractVV(_arg2, _arg1.position);
_local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y));
_local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y));
_local3.x = _local4;
return (_local3);
}
public static function b2Abs(_arg1:Number):Number{
return (((_arg1 > 0)) ? _arg1 : -(_arg1));
}
public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return (b2Max(_arg2, b2Min(_arg1, _arg3)));
}
public static function b2AbsV(_arg1:b2Vec2):b2Vec2{
var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y));
return (_local2);
}
public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y));
return (_local3);
}
public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{
return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x)));
}
public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{
return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
}
public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x));
return (_local3);
}
public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2));
return (_local3);
}
public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{
var _local3:Number = (_arg1.x - _arg2.x);
var _local4:Number = (_arg1.y - _arg2.y);
return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4))));
}
public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1));
var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2));
var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4);
return (_local5);
}
public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y));
return (_local3);
}
public static function b2IsPowerOfTwo(_arg1:uint):Boolean{
var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0)));
return (_local2);
}
public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{
return (b2MaxV(_arg2, b2MinV(_arg1, _arg3)));
}
public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{
var _local3:Number = Math.random();
_local3 = (((_arg2 - _arg1) * _local3) + _arg1);
return (_local3);
}
public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2));
return (_local3);
}
public static function b2Min(_arg1:Number, _arg2:Number):Number{
return (((_arg1 < _arg2)) ? _arg1 : _arg2);
}
public static function b2Random():Number{
return (((Math.random() * 2) - 1));
}
public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2));
return (_local3);
}
public static function b2NextPowerOfTwo(_arg1:uint):uint{
_arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647));
_arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823));
_arg1 = (_arg1 | ((_arg1 >> 4) & 268435455));
_arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF));
_arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF));
return ((_arg1 + 1));
}
public static function b2Max(_arg1:Number, _arg2:Number):Number{
return (((_arg1 > _arg2)) ? _arg1 : _arg2);
}
public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y)));
return (_local3);
}
}
}//package Box2D.Common.Math
Section 39
//b2Sweep (Box2D.Common.Math.b2Sweep)
package Box2D.Common.Math {
public class b2Sweep {
public var localCenter:b2Vec2;
public var a:Number;
public var c:b2Vec2;
public var a0:Number;
public var c0:b2Vec2;
public var t0:Number;
public function b2Sweep(){
localCenter = new b2Vec2();
c0 = new b2Vec2();
c = new b2Vec2();
super();
}
public function Advance(_arg1:Number):void{
var _local2:Number;
if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){
_local2 = ((_arg1 - t0) / (1 - t0));
c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x));
c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y));
a0 = (((1 - _local2) * a0) + (_local2 * a));
t0 = _arg1;
};
}
public function GetXForm(_arg1:b2XForm, _arg2:Number):void{
var _local4:Number;
var _local5:Number;
if ((1 - t0) > Number.MIN_VALUE){
_local4 = ((_arg2 - t0) / (1 - t0));
_arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x));
_arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y));
_local5 = (((1 - _local4) * a0) + (_local4 * a));
_arg1.R.Set(_local5);
} else {
_arg1.position.SetV(c);
_arg1.R.Set(a);
};
var _local3:b2Mat22 = _arg1.R;
_arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y)));
_arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y)));
}
}
}//package Box2D.Common.Math
Section 40
//b2Vec2 (Box2D.Common.Math.b2Vec2)
package Box2D.Common.Math {
public class b2Vec2 {
public var y:Number;
public var x:Number;
public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{
x = _arg1;
y = _arg2;
}
public function Add(_arg1:b2Vec2):void{
x = (x + _arg1.x);
y = (y + _arg1.y);
}
public function Set(_arg1:Number=0, _arg2:Number=0):void{
x = _arg1;
y = _arg2;
}
public function Multiply(_arg1:Number):void{
x = (x * _arg1);
y = (y * _arg1);
}
public function Length():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function LengthSquared():Number{
return (((x * x) + (y * y)));
}
public function MulM(_arg1:b2Mat22):void{
var _local2:Number = x;
x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y));
y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y));
}
public function SetZero():void{
x = 0;
y = 0;
}
public function MinV(_arg1:b2Vec2):void{
x = ((x < _arg1.x)) ? x : _arg1.x;
y = ((y < _arg1.y)) ? y : _arg1.y;
}
public function Normalize():Number{
var _local1:Number = Math.sqrt(((x * x) + (y * y)));
if (_local1 < Number.MIN_VALUE){
return (0);
};
var _local2:Number = (1 / _local1);
x = (x * _local2);
y = (y * _local2);
return (_local1);
}
public function CrossVF(_arg1:Number):void{
var _local2:Number = x;
x = (_arg1 * y);
y = (-(_arg1) * _local2);
}
public function MaxV(_arg1:b2Vec2):void{
x = ((x > _arg1.x)) ? x : _arg1.x;
y = ((y > _arg1.y)) ? y : _arg1.y;
}
public function SetV(_arg1:b2Vec2):void{
x = _arg1.x;
y = _arg1.y;
}
public function Negative():b2Vec2{
return (new b2Vec2(-(x), -(y)));
}
public function Magnitude():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function CrossFV(_arg1:Number):void{
var _local2:Number = x;
x = (-(_arg1) * y);
y = (_arg1 * _local2);
}
public function Abs():void{
if (x < 0){
x = -(x);
};
if (y < 0){
y = -(y);
};
}
public function Subtract(_arg1:b2Vec2):void{
x = (x - _arg1.x);
y = (y - _arg1.y);
}
public function Copy():b2Vec2{
return (new b2Vec2(x, y));
}
public function MulTM(_arg1:b2Mat22):void{
var _local2:Number = b2Math.b2Dot(this, _arg1.col1);
y = b2Math.b2Dot(this, _arg1.col2);
x = _local2;
}
public function IsValid():Boolean{
return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y))));
}
public static function Make(_arg1:Number, _arg2:Number):b2Vec2{
return (new b2Vec2(_arg1, _arg2));
}
}
}//package Box2D.Common.Math
Section 41
//b2XForm (Box2D.Common.Math.b2XForm)
package Box2D.Common.Math {
public class b2XForm {
public var position:b2Vec2;
public var R:b2Mat22;
public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{
position = new b2Vec2();
R = new b2Mat22();
super();
if (_arg1){
position.SetV(_arg1);
R.SetM(_arg2);
};
}
public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{
position.SetV(_arg1);
R.SetM(_arg2);
}
public function Set(_arg1:b2XForm):void{
position.SetV(_arg1.position);
R.SetM(_arg1.R);
}
public function SetIdentity():void{
position.SetZero();
R.SetIdentity();
}
}
}//package Box2D.Common.Math
Section 42
//b2Color (Box2D.Common.b2Color)
package Box2D.Common {
import Box2D.Common.Math.*;
public class b2Color {
private var _r:uint;// = 0
private var _g:uint;// = 0
private var _b:uint;// = 0
public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
_g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1)));
_b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1)));
}
public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
_g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1)));
_b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1)));
}
public function set b(_arg1:Number):void{
_b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
public function get color():uint{
return (((_r | (_g << 8)) | (_b << 16)));
}
public function set r(_arg1:Number):void{
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
public function set g(_arg1:Number):void{
_g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
}
}//package Box2D.Common
Section 43
//b2Settings (Box2D.Common.b2Settings)
package Box2D.Common {
import Box2D.Common.Math.*;
public class b2Settings {
public static const b2_angularSleepTolerance:Number = 0.0111111111111111;
public static const b2_linearSleepTolerance:Number = 0.01;
public static const b2_angularSlop:Number = 0.0349065850398866;
public static const b2_linearSlop:Number = 0.005;
public static const b2_pi:Number = 3.14159265358979;
public static const b2_maxProxies:int = 0x1000;
public static const b2_maxAngularVelocitySquared:Number = 62500;
public static const b2_maxPolygonVertices:int = 8;
public static const b2_velocityThreshold:Number = 1;
public static const b2_contactBaumgarte:Number = 0.2;
public static const b2_maxPairs:int = 32768;
public static const b2_maxTOIContactsPerIsland:int = 32;
public static const b2_timeToSleep:Number = 0.5;
public static const b2_maxManifoldPoints:int = 2;
public static const b2_maxAngularVelocity:Number = 250;
public static const b2_maxAngularCorrection:Number = 0.139626340159546;
public static const USHRT_MAX:int = 0xFFFF;
public static const b2_maxLinearVelocity:Number = 200;
public static const b2_maxLinearCorrection:Number = 0.2;
public static const b2_toiSlop:Number = 0.04;
public static const b2_maxLinearVelocitySquared:Number = 40000;
public static function b2Assert(_arg1:Boolean):void{
var _local2:b2Vec2;
if (!_arg1){
_local2.x++;
};
}
}
}//package Box2D.Common
Section 44
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2CircleContact extends b2Contact {
private var m_manifolds:Array;
public var m_manifold:b2Manifold;
private var m0:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
var _local3:b2ManifoldPoint = m_manifold.points[0];
_local3.normalImpulse = 0;
_local3.tangentImpulse = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2ManifoldPoint;
var _local8:b2ManifoldPoint;
var _local5:b2Body = m_shape1.m_body;
var _local6:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf);
var _local7:b2ContactPoint = s_evalCP;
_local7.shape1 = m_shape1;
_local7.shape2 = m_shape2;
_local7.friction = m_friction;
_local7.restitution = m_restitution;
if (m_manifold.pointCount > 0){
m_manifoldCount = 1;
_local8 = m_manifold.points[0];
if (m0.pointCount == 0){
_local8.normalImpulse = 0;
_local8.tangentImpulse = 0;
if (_arg1){
_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local8.separation;
_local7.id.key = _local8.id._key;
_arg1.Add(_local7);
};
} else {
_local4 = m0.points[0];
_local8.normalImpulse = _local4.normalImpulse;
_local8.tangentImpulse = _local4.tangentImpulse;
if (_arg1){
_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local8.separation;
_local7.id.key = _local8.id._key;
_arg1.Persist(_local7);
};
};
} else {
m_manifoldCount = 0;
if ((((m0.pointCount > 0)) && (_arg1))){
_local4 = m0.points[0];
_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m0.normal);
_local7.separation = _local4.separation;
_local7.id.key = _local4.id._key;
_arg1.Remove(_local7);
};
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2CircleContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 45
//b2ConcaveArcAndCircleContact (Box2D.Dynamics.Contacts.b2ConcaveArcAndCircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2ConcaveArcAndCircleContact extends b2PolyAndCircleContact {
private static var s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2ConcaveArcAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){
super(_arg1, _arg2);
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:int;
var _local3:b2Vec2;
var _local4:b2Vec2;
var _local5:b2ManifoldPoint;
var _local10:b2ManifoldPoint;
var _local11:Boolean;
var _local12:uint;
var _local13:int;
var _local6:b2Body = m_shape1.m_body;
var _local7:b2Body = m_shape2.m_body;
m0.Set(m_manifolds[0]);
m_manifoldCount = b2CollideConcaveArcAndCircle(m_manifolds, (m_shape1 as b2ConcaveArcShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf);
var _local8:Array = [false, false];
var _local9:b2ContactPoint = s_evalCP;
_local9.shape1 = m_shape1;
_local9.shape2 = m_shape2;
_local9.friction = m_friction;
_local9.restitution = m_restitution;
if (m_manifold.pointCount > 0){
_local2 = 0;
while (_local2 < m_manifold.pointCount) {
_local10 = m_manifold.points[_local2];
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = false;
_local12 = _local10.id._key;
_local13 = 0;
while (_local13 < m0.pointCount) {
if (_local8[_local13] == true){
} else {
_local5 = m0.points[_local13];
if (_local5.id._key == _local12){
_local8[_local13] = true;
_local10.normalImpulse = _local5.normalImpulse;
_local10.tangentImpulse = _local5.tangentImpulse;
_local11 = true;
if (_arg1 != null){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Persist(_local9);
};
break;
};
};
_local13++;
};
if ((((_local11 == false)) && (!((_arg1 == null))))){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Add(_local9);
};
_local2++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (_arg1 == null){
return;
};
_local2 = 0;
while (_local2 < m0.pointCount) {
if (_local8[_local2]){
} else {
_local5 = m0.points[_local2];
_local9.position = _local6.GetWorldPoint(_local5.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m0.normal);
_local9.separation = _local5.separation;
_local9.id.key = _local5.id._key;
_arg1.Remove(_local9);
};
_local2++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2ConcaveArcAndCircleContact(_arg1, _arg2));
}
public static function b2CollideConcaveArcAndCircle(_arg1:Array, _arg2:b2ConcaveArcShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):Number{
var _local7:uint;
var _local8:b2Manifold;
var _local10:b2ManifoldPoint;
var _local11:Number;
var _local12:Number;
var _local13:b2Vec2;
var _local14:b2Mat22;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local21:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local6:Boolean;
_local7 = b2Collision.b2_nullFeature;
_local8 = _arg1[0];
var _local9:Number = 0;
_local8.pointCount = 0;
_local14 = _arg5.R;
_local13 = _arg4.m_localPosition;
_local17 = (_arg5.position.x + ((_local14.col1.x * _local13.x) + (_local14.col2.x * _local13.y)));
_local18 = (_arg5.position.y + ((_local14.col1.y * _local13.x) + (_local14.col2.y * _local13.y)));
_local11 = (_local17 - _arg3.position.x);
_local12 = (_local18 - _arg3.position.y);
_local14 = _arg3.R;
var _local19:Number = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
var _local20:Number = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
var _local22:int;
var _local23:Number = -(Number.MAX_VALUE);
var _local24:Number = _arg4.m_radius;
var _local25 = 1;
while (_local25 < _arg2.m_vertexCount) {
_local11 = (_local19 - _arg2.m_vertices[_local25].x);
_local12 = (_local20 - _arg2.m_vertices[_local25].y);
_local33 = ((_arg2.m_normals[_local25].x * _local11) + (_arg2.m_normals[_local25].y * _local12));
if (_local33 > _local24){
_local9 = 0;
return (_local9);
};
if (_local33 > _local23){
_local23 = _local33;
_local22 = _local25;
};
_local25++;
};
if (((((true) || ((_local22 == 1)))) || ((_local22 == (_arg2.m_vertexCount - 1))))){
_local33 = ((_arg2.m_normals[0].x * (_local19 - _arg2.m_vertices[0].x)) + (_arg2.m_normals[0].y * (_local20 - _arg2.m_vertices[0].y)));
_local34 = (_local19 - _arg2.m_arcCenter.x);
_local35 = (_local20 - _arg2.m_arcCenter.y);
_local36 = Math.sqrt(((_local34 * _local34) + (_local35 * _local35)));
_local34 = (_local34 / _local36);
_local35 = (_local35 / _local36);
_local33 = Math.max(_local33, (_arg2.m_radius - _local36));
if (_local33 > _local24){
_local9 = 0;
return (_local9);
};
if (_local33 > _local23){
_local23 = _local33;
_local22 = 0;
};
};
if ((((_local22 == 0)) && ((_local24 >= _arg2.m_radius)))){
if (_arg1.length < 2){
_arg1[1] = new b2Manifold();
_arg1[1].pointCount = 0;
_arg1[1].points[0].normalImpulse = 0;
_arg1[1].points[0].tangentImpulse = 0;
};
_local9 = 0;
_local25 = 0;
while (_local25 < 2) {
_local11 = (_arg2.m_vertices[_local25].x - _local19);
_local12 = (_arg2.m_vertices[_local25].y - _local20);
_local37 = ((_local11 * _local11) + (_local12 * _local12));
if (_local37 < (_local24 * _local24)){
_local38 = Math.sqrt(_local37);
_arg1[_local9].pointCount = 1;
_local10 = _arg1[_local9].points[0];
_local10.id.features.incidentEdge = _local7;
_local10.id.features.incidentVertex = _local25;
_local10.id.features.referenceEdge = _local7;
_local10.id.features.flip = 0;
_local10.separation = (_local38 - _local24);
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = (-(_local11) / _local38);
_local12 = (-(_local12) / _local38);
_arg1[_local9].normal.x = ((_local14.col1.x * _local11) + (_local14.col2.x * _local12));
_arg1[_local9].normal.y = ((_local14.col1.y * _local11) + (_local14.col2.y * _local12));
_local15 = (_local17 - (_local24 * _arg1[_local9].normal.x));
_local16 = (_local18 - (_local24 * _arg1[_local9].normal.y));
_local11 = (_local15 - _arg3.position.x);
_local12 = (_local16 - _arg3.position.y);
_local14 = _arg3.R;
_local10.localPoint1.x = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
_local10.localPoint1.y = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
_local11 = (_local15 - _arg5.position.x);
_local12 = (_local16 - _arg5.position.y);
_local14 = _arg5.R;
_local10.localPoint2.x = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
_local10.localPoint2.y = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
_local9++;
};
_local25++;
};
return (_local9);
};
if (_local23 < Number.MIN_VALUE){
_local8.pointCount = 1;
_local9 = 1;
if (_local22 == 0){
_local14 = _arg3.R;
_local8.normal.x = -(((_local14.col1.x * _local34) + (_local14.col2.x * _local35)));
_local8.normal.y = -(((_local14.col1.y * _local34) + (_local14.col2.y * _local35)));
} else {
_local13 = _arg2.m_normals[_local22];
_local14 = _arg3.R;
_local8.normal.x = ((_local14.col1.x * _local13.x) + (_local14.col2.x * _local13.y));
_local8.normal.y = ((_local14.col1.y * _local13.x) + (_local14.col2.y * _local13.y));
};
_local10 = _local8.points[0];
_local10.id.features.incidentEdge = _local22;
_local10.id.features.incidentVertex = _local7;
_local10.id.features.referenceEdge = 0;
_local10.id.features.flip = 0;
_local15 = (_local17 - (_local24 * _local8.normal.x));
_local16 = (_local18 - (_local24 * _local8.normal.y));
_local11 = (_local15 - _arg3.position.x);
_local12 = (_local16 - _arg3.position.y);
_local14 = _arg3.R;
_local10.localPoint1.x = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
_local10.localPoint1.y = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
_local11 = (_local15 - _arg5.position.x);
_local12 = (_local16 - _arg5.position.y);
_local14 = _arg5.R;
_local10.localPoint2.x = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
_local10.localPoint2.y = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
_local10.separation = (_local23 - _local24);
return (_local9);
};
var _local26:int = _local22;
var _local27:int = (((_local26 + 1) < _arg2.m_vertexCount)) ? (_local26 + 1) : 0;
var _local28:Number = (_arg2.m_vertices[_local27].x - _arg2.m_vertices[_local26].x);
var _local29:Number = (_arg2.m_vertices[_local27].y - _arg2.m_vertices[_local26].y);
var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29)));
_local28 = (_local28 / _local30);
_local29 = (_local29 / _local30);
if (_local30 < Number.MIN_VALUE){
_local11 = (_local19 - _arg2.m_vertices[_local26].x);
_local12 = (_local20 - _arg2.m_vertices[_local26].y);
_local21 = Math.sqrt(((_local11 * _local11) + (_local12 * _local12)));
_local11 = (_local11 / _local21);
_local12 = (_local12 / _local21);
if (_local21 > _local24){
_local9 = 0;
return (_local9);
};
_local8.pointCount = 1;
_local9 = 1;
_local14 = _arg3.R;
_local8.normal.x = ((_local14.col1.x * _local11) + (_local14.col2.x * _local12));
_local8.normal.y = ((_local14.col1.y * _local11) + (_local14.col2.y * _local12));
_local10 = _local8.points[0];
_local10.id.features.incidentEdge = _local7;
_local10.id.features.incidentVertex = _local26;
_local10.id.features.referenceEdge = _local7;
_local10.id.features.flip = 0;
_local15 = (_local17 - (_local24 * _local8.normal.x));
_local16 = (_local18 - (_local24 * _local8.normal.y));
_local11 = (_local15 - _arg3.position.x);
_local12 = (_local16 - _arg3.position.y);
_local14 = _arg3.R;
_local10.localPoint1.x = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
_local10.localPoint1.y = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
_local11 = (_local15 - _arg5.position.x);
_local12 = (_local16 - _arg5.position.y);
_local14 = _arg5.R;
_local10.localPoint2.x = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
_local10.localPoint2.y = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
_local10.separation = (_local21 - _local24);
return (_local9);
};
_local11 = (_local19 - _arg2.m_vertices[_local26].x);
_local12 = (_local20 - _arg2.m_vertices[_local26].y);
_local10 = _local8.points[0];
_local10.id.features.incidentEdge = 0;
_local10.id.features.incidentVertex = 0;
_local10.id.features.referenceEdge = 0;
_local10.id.features.flip = 0;
if (_local22 == 0){
_local39 = ((_local28 * _local34) + (_local29 * _local35));
if (((_local34 * _arg2.m_normals[0].x) + (_local35 * _arg2.m_normals[0].y)) > 0){
if (_local39 < 0){
_local31 = _arg2.m_vertices[_local26].x;
_local32 = _arg2.m_vertices[_local26].y;
_local10.id.features.incidentVertex = _local26;
_local10.id.features.incidentEdge = _local7;
} else {
_local31 = _arg2.m_vertices[_local27].x;
_local32 = _arg2.m_vertices[_local27].y;
_local10.id.features.incidentVertex = _local27;
_local10.id.features.incidentEdge = _local7;
};
} else {
if (_local39 <= -(_arg2.m_norm)){
_local31 = _arg2.m_vertices[_local26].x;
_local32 = _arg2.m_vertices[_local26].y;
_local10.id.features.incidentVertex = _local26;
_local10.id.features.incidentEdge = _local7;
} else {
if (_local39 >= _arg2.m_norm){
_local31 = _arg2.m_vertices[_local27].x;
_local32 = _arg2.m_vertices[_local27].y;
_local10.id.features.incidentVertex = _local27;
_local10.id.features.incidentEdge = _local7;
} else {
_local31 = (_arg2.m_arcCenter.x + (_local34 * _arg2.m_radius));
_local32 = (_arg2.m_arcCenter.y + (_local35 * _arg2.m_radius));
_local10.id.features.incidentEdge = _local26;
};
};
};
} else {
_local40 = ((_local11 * _local28) + (_local12 * _local29));
if (_local40 <= 0){
_local31 = _arg2.m_vertices[_local26].x;
_local32 = _arg2.m_vertices[_local26].y;
_local10.id.features.incidentVertex = _local26;
_local10.id.features.incidentEdge = _local7;
} else {
if (_local40 >= _local30){
_local31 = _arg2.m_vertices[_local27].x;
_local32 = _arg2.m_vertices[_local27].y;
_local10.id.features.incidentVertex = _local27;
_local10.id.features.incidentEdge = _local7;
} else {
_local31 = ((_local28 * _local40) + _arg2.m_vertices[_local26].x);
_local32 = ((_local29 * _local40) + _arg2.m_vertices[_local26].y);
_local10.id.features.incidentEdge = _local26;
};
};
};
_local11 = (_local19 - _local31);
_local12 = (_local20 - _local32);
_local21 = Math.sqrt(((_local11 * _local11) + (_local12 * _local12)));
_local11 = (_local11 / _local21);
_local12 = (_local12 / _local21);
if (_local21 > _local24){
_local9 = 0;
return (_local9);
};
_local8.pointCount = 1;
_local9 = 1;
_local14 = _arg3.R;
_local8.normal.x = ((_local14.col1.x * _local11) + (_local14.col2.x * _local12));
_local8.normal.y = ((_local14.col1.y * _local11) + (_local14.col2.y * _local12));
_local15 = (_local17 - (_local24 * _local8.normal.x));
_local16 = (_local18 - (_local24 * _local8.normal.y));
_local11 = (_local15 - _arg3.position.x);
_local12 = (_local16 - _arg3.position.y);
_local14 = _arg3.R;
_local10.localPoint1.x = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
_local10.localPoint1.y = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
_local11 = (_local15 - _arg5.position.x);
_local12 = (_local16 - _arg5.position.y);
_local14 = _arg5.R;
_local10.localPoint2.x = ((_local11 * _local14.col1.x) + (_local12 * _local14.col1.y));
_local10.localPoint2.y = ((_local11 * _local14.col2.x) + (_local12 * _local14.col2.y));
_local10.separation = (_local21 - _local24);
return (_local9);
}
}
}//package Box2D.Dynamics.Contacts
Section 46
//b2Contact (Box2D.Dynamics.Contacts.b2Contact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Contact {
public var m_shape1:b2Shape;
public var m_shape2:b2Shape;
public var m_prev:b2Contact;
public var m_toi:Number;
public var m_next:b2Contact;
public var m_friction:Number;
public var m_manifoldCount:int;
public var m_node1:b2ContactEdge;
public var m_node2:b2ContactEdge;
public var m_restitution:Number;
public var m_flags:uint;
public static var e_toiFlag:uint = 8;
public static var e_nonSolidFlag:uint = 1;
public static var e_slowFlag:uint = 2;
public static var e_islandFlag:uint = 4;
public static var s_registers:Array;
public static var s_initialized:Boolean = false;
public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){
m_node1 = new b2ContactEdge();
m_node2 = new b2ContactEdge();
super();
m_flags = 0;
if (((!(_arg1)) || (!(_arg2)))){
m_shape1 = null;
m_shape2 = null;
return;
};
if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){
m_flags = (m_flags | e_nonSolidFlag);
};
m_shape1 = _arg1;
m_shape2 = _arg2;
m_manifoldCount = 0;
m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction));
m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution);
m_prev = null;
m_next = null;
m_node1.contact = null;
m_node1.prev = null;
m_node1.next = null;
m_node1.other = null;
m_node2.contact = null;
m_node2.prev = null;
m_node2.next = null;
m_node2.other = null;
}
public function IsSolid():Boolean{
return (((m_flags & e_nonSolidFlag) == 0));
}
public function GetShape1():b2Shape{
return (m_shape1);
}
public function GetShape2():b2Shape{
return (m_shape2);
}
public function GetNext():b2Contact{
return (m_next);
}
public function GetManifoldCount():int{
return (m_manifoldCount);
}
public function GetManifolds():Array{
return (null);
}
public function Update(_arg1:b2ContactListener):void{
var _local2:int = m_manifoldCount;
Evaluate(_arg1);
var _local3:int = m_manifoldCount;
var _local4:b2Body = m_shape1.m_body;
var _local5:b2Body = m_shape2.m_body;
if ((((_local3 == 0)) && ((_local2 > 0)))){
_local4.WakeUp();
_local5.WakeUp();
};
if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){
m_flags = (m_flags & ~(e_slowFlag));
} else {
m_flags = (m_flags | e_slowFlag);
};
}
public function Evaluate(_arg1:b2ContactListener):void{
}
public static function InitializeRegisters():void{
var _local2:int;
s_registers = new Array(b2Shape.e_shapeTypeCount);
var _local1:int;
while (_local1 < b2Shape.e_shapeTypeCount) {
s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount);
_local2 = 0;
while (_local2 < b2Shape.e_shapeTypeCount) {
s_registers[_local1][_local2] = new b2ContactRegister();
_local2++;
};
_local1++;
};
AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape);
AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape);
AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape);
AddType(b2ConcaveArcAndCircleContact.Create, b2ConcaveArcAndCircleContact.Destroy, b2Shape.e_concaveArcShape, b2Shape.e_circleShape);
AddType(b2PolyAndConcaveArcContact.Create, b2PolyAndConcaveArcContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_concaveArcShape);
AddType(b2StaticEdgeAndCircleContact.Create, b2StaticEdgeAndCircleContact.Destroy, b2Shape.e_staticEdgeShape, b2Shape.e_circleShape);
AddType(b2PolyAndStaticEdgeContact.Create, b2PolyAndStaticEdgeContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_staticEdgeShape);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
if (_arg1.m_manifoldCount > 0){
_arg1.m_shape1.m_body.WakeUp();
_arg1.m_shape2.m_body.WakeUp();
};
var _local3:int = _arg1.m_shape1.m_type;
var _local4:int = _arg1.m_shape2.m_type;
var _local5:b2ContactRegister = s_registers[_local3][_local4];
var _local6:Function = _local5.destroyFcn;
_local6(_arg1, _arg2);
}
public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{
s_registers[_arg3][_arg4].createFcn = _arg1;
s_registers[_arg3][_arg4].destroyFcn = _arg2;
s_registers[_arg3][_arg4].primary = true;
if (_arg3 != _arg4){
s_registers[_arg4][_arg3].createFcn = _arg1;
s_registers[_arg4][_arg3].destroyFcn = _arg2;
s_registers[_arg4][_arg3].primary = false;
};
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
var _local8:b2Contact;
var _local9:int;
var _local10:b2Manifold;
if (s_initialized == false){
InitializeRegisters();
s_initialized = true;
};
var _local4:int = _arg1.m_type;
var _local5:int = _arg2.m_type;
var _local6:b2ContactRegister = s_registers[_local4][_local5];
var _local7:Function = _local6.createFcn;
if (_local7 != null){
if (_local6.primary){
return (_local7(_arg1, _arg2, _arg3));
};
_local8 = _local7(_arg2, _arg1, _arg3);
_local9 = 0;
while (_local9 < _local8.m_manifoldCount) {
_local10 = _local8.GetManifolds()[_local9];
_local8.GetManifolds()[_local9].normal = _local10.normal.Negative();
_local9++;
};
return (_local8);
//unresolved jump
};
return (null);
}
}
}//package Box2D.Dynamics.Contacts
Section 47
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2ContactConstraint {
public var points:Array;
public var normal:b2Vec2;
public var restitution:Number;
public var body1:b2Body;
public var manifold:b2Manifold;
public var body2:b2Body;
public var friction:Number;
public var pointCount:int;
public function b2ContactConstraint(){
normal = new b2Vec2();
super();
points = new Array(b2Settings.b2_maxManifoldPoints);
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
points[_local1] = new b2ContactConstraintPoint();
_local1++;
};
}
}
}//package Box2D.Dynamics.Contacts
Section 48
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
public class b2ContactConstraintPoint {
public var r2:b2Vec2;
public var separation:Number;
public var positionImpulse:Number;
public var normalImpulse:Number;
public var tangentMass:Number;
public var equalizedMass:Number;
public var tangentImpulse:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var normalMass:Number;
public var velocityBias:Number;
public var r1:b2Vec2;
public function b2ContactConstraintPoint(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
r1 = new b2Vec2();
r2 = new b2Vec2();
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 49
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge)
package Box2D.Dynamics.Contacts {
import Box2D.Dynamics.*;
public class b2ContactEdge {
public var other:b2Body;
public var prev:b2ContactEdge;
public var contact:b2Contact;
public var next:b2ContactEdge;
}
}//package Box2D.Dynamics.Contacts
Section 50
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister)
package Box2D.Dynamics.Contacts {
public class b2ContactRegister {
public var primary:Boolean;
public var createFcn:Function;
public var destroyFcn:Function;
}
}//package Box2D.Dynamics.Contacts
Section 51
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2ContactResult {
public var position:b2Vec2;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var normalImpulse:Number;
public var normal:b2Vec2;
public var tangentImpulse:Number;
public var id:b2ContactID;
public function b2ContactResult(){
position = new b2Vec2();
normal = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 52
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2ContactSolver {
public var m_constraintCount:int;
public var m_constraints:Array;
public var m_allocator;
public var m_step:b2TimeStep;
public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){
var _local5:b2Contact;
var _local6:int;
var _local7:b2Vec2;
var _local8:b2Mat22;
var _local10:b2Body;
var _local11:b2Body;
var _local12:int;
var _local13:Array;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:int;
var _local23:b2Manifold;
var _local24:Number;
var _local25:Number;
var _local26:b2ContactConstraint;
var _local27:uint;
var _local28:b2ManifoldPoint;
var _local29:b2ContactConstraintPoint;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
var _local43:Number;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:Number;
m_step = new b2TimeStep();
m_constraints = new Array();
super();
m_step.dt = _arg1.dt;
m_step.inv_dt = _arg1.inv_dt;
m_step.maxIterations = _arg1.maxIterations;
m_allocator = _arg4;
m_constraintCount = 0;
_local6 = 0;
while (_local6 < _arg3) {
_local5 = _arg2[_local6];
m_constraintCount = (m_constraintCount + _local5.m_manifoldCount);
_local6++;
};
_local6 = 0;
while (_local6 < m_constraintCount) {
m_constraints[_local6] = new b2ContactConstraint();
_local6++;
};
var _local9:int;
_local6 = 0;
while (_local6 < _arg3) {
_local5 = _arg2[_local6];
_local10 = _local5.m_shape1.m_body;
_local11 = _local5.m_shape2.m_body;
_local12 = _local5.m_manifoldCount;
_local13 = _local5.GetManifolds();
_local14 = _local5.m_friction;
_local15 = _local5.m_restitution;
_local16 = _local10.m_linearVelocity.x;
_local17 = _local10.m_linearVelocity.y;
_local18 = _local11.m_linearVelocity.x;
_local19 = _local11.m_linearVelocity.y;
_local20 = _local10.m_angularVelocity;
_local21 = _local11.m_angularVelocity;
_local22 = 0;
while (_local22 < _local12) {
_local23 = _local13[_local22];
_local24 = _local23.normal.x;
_local25 = _local23.normal.y;
_local26 = m_constraints[_local9];
_local26.body1 = _local10;
_local26.body2 = _local11;
_local26.manifold = _local23;
_local26.normal.x = _local24;
_local26.normal.y = _local25;
_local26.pointCount = _local23.pointCount;
_local26.friction = _local14;
_local26.restitution = _local15;
_local27 = 0;
while (_local27 < _local26.pointCount) {
_local28 = _local23.points[_local27];
_local29 = _local26.points[_local27];
_local29.normalImpulse = _local28.normalImpulse;
_local29.tangentImpulse = _local28.tangentImpulse;
_local29.separation = _local28.separation;
_local29.positionImpulse = 0;
_local29.localAnchor1.SetV(_local28.localPoint1);
_local29.localAnchor2.SetV(_local28.localPoint2);
_local8 = _local10.m_xf.R;
_local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x);
_local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y);
_local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33));
_local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33));
_local32 = _local30;
_local29.r1.Set(_local32, _local33);
_local8 = _local11.m_xf.R;
_local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x);
_local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y);
_local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35));
_local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35));
_local34 = _local30;
_local29.r2.Set(_local34, _local35);
_local36 = ((_local32 * _local32) + (_local33 * _local33));
_local37 = ((_local34 * _local34) + (_local35 * _local35));
_local38 = ((_local32 * _local24) + (_local33 * _local25));
_local39 = ((_local34 * _local24) + (_local35 * _local25));
_local40 = (_local10.m_invMass + _local11.m_invMass);
_local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39)))));
_local29.normalMass = (1 / _local40);
_local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass));
_local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39)))));
_local29.equalizedMass = (1 / _local41);
_local42 = _local25;
_local43 = -(_local24);
_local44 = ((_local32 * _local42) + (_local33 * _local43));
_local45 = ((_local34 * _local42) + (_local35 * _local43));
_local46 = (_local10.m_invMass + _local11.m_invMass);
_local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45)))));
_local29.tangentMass = (1 / _local46);
_local29.velocityBias = 0;
if (_local29.separation > 0){
_local29.velocityBias = (-60 * _local29.separation);
};
_local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33));
_local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32));
_local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31));
if (_local47 < -(b2Settings.b2_velocityThreshold)){
_local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47));
};
_local27++;
};
_local9++;
_local22++;
};
_local6++;
};
}
public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2Mat22;
var _local6:b2ContactConstraint;
var _local7:b2Body;
var _local8:b2Body;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:int;
var _local19:int;
var _local20:b2ContactConstraintPoint;
var _local21:Number;
var _local22:Number;
var _local23:b2ContactConstraintPoint;
var _local5:int;
while (_local5 < m_constraintCount) {
_local6 = m_constraints[_local5];
_local7 = _local6.body1;
_local8 = _local6.body2;
_local9 = _local7.m_invMass;
_local10 = _local7.m_invI;
_local11 = _local8.m_invMass;
_local12 = _local8.m_invI;
_local13 = _local6.normal.x;
_local14 = _local6.normal.y;
_local15 = _local14;
_local16 = -(_local13);
if (_arg1.warmStarting){
_local19 = _local6.pointCount;
_local18 = 0;
while (_local18 < _local19) {
_local20 = _local6.points[_local18];
_local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio);
_local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio);
_local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15));
_local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16));
_local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21))));
_local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21));
_local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22));
_local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21))));
_local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21));
_local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22));
_local18++;
};
} else {
_local19 = _local6.pointCount;
_local18 = 0;
while (_local18 < _local19) {
_local23 = _local6.points[_local18];
_local23.normalImpulse = 0;
_local23.tangentImpulse = 0;
_local18++;
};
};
_local5++;
};
}
public function SolvePositionConstraints(_arg1:Number):Boolean{
var _local3:b2Mat22;
var _local4:b2Vec2;
var _local6:b2ContactConstraint;
var _local7:b2Body;
var _local8:b2Body;
var _local9:b2Vec2;
var _local10:Number;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:int;
var _local20:int;
var _local21:b2ContactConstraintPoint;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local2:Number = 0;
var _local5:int;
while (_local5 < m_constraintCount) {
_local6 = m_constraints[_local5];
_local7 = _local6.body1;
_local8 = _local6.body2;
_local9 = _local7.m_sweep.c;
_local10 = _local7.m_sweep.a;
_local11 = _local8.m_sweep.c;
_local12 = _local8.m_sweep.a;
_local13 = (_local7.m_mass * _local7.m_invMass);
_local14 = (_local7.m_mass * _local7.m_invI);
_local15 = (_local8.m_mass * _local8.m_invMass);
_local16 = (_local8.m_mass * _local8.m_invI);
_local17 = _local6.normal.x;
_local18 = _local6.normal.y;
_local19 = _local6.pointCount;
_local20 = 0;
while (_local20 < _local19) {
_local21 = _local6.points[_local20];
_local3 = _local7.m_xf.R;
_local4 = _local7.m_sweep.localCenter;
_local22 = (_local21.localAnchor1.x - _local4.x);
_local23 = (_local21.localAnchor1.y - _local4.y);
_local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23));
_local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23));
_local22 = _local26;
_local3 = _local8.m_xf.R;
_local4 = _local8.m_sweep.localCenter;
_local24 = (_local21.localAnchor2.x - _local4.x);
_local25 = (_local21.localAnchor2.y - _local4.y);
_local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25));
_local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25));
_local24 = _local26;
_local27 = (_local9.x + _local22);
_local28 = (_local9.y + _local23);
_local29 = (_local11.x + _local24);
_local30 = (_local11.y + _local25);
_local31 = (_local29 - _local27);
_local32 = (_local30 - _local28);
_local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation);
_local2 = b2Math.b2Min(_local2, _local33);
_local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0));
_local35 = (-(_local21.equalizedMass) * _local34);
_local36 = _local21.positionImpulse;
_local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0);
_local35 = (_local21.positionImpulse - _local36);
_local37 = (_local35 * _local17);
_local38 = (_local35 * _local18);
_local9.x = (_local9.x - (_local13 * _local37));
_local9.y = (_local9.y - (_local13 * _local38));
_local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37))));
_local7.m_sweep.a = _local10;
_local7.SynchronizeTransform();
_local11.x = (_local11.x + (_local15 * _local37));
_local11.y = (_local11.y + (_local15 * _local38));
_local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37))));
_local8.m_sweep.a = _local12;
_local8.SynchronizeTransform();
_local20++;
};
_local5++;
};
return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop)));
}
public function SolveVelocityConstraints():void{
var _local1:int;
var _local2:b2ContactConstraintPoint;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:b2Mat22;
var _local18:b2Vec2;
var _local20:b2ContactConstraint;
var _local21:b2Body;
var _local22:b2Body;
var _local23:Number;
var _local24:Number;
var _local25:b2Vec2;
var _local26:b2Vec2;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:int;
var _local38:Number;
var _local19:int;
while (_local19 < m_constraintCount) {
_local20 = m_constraints[_local19];
_local21 = _local20.body1;
_local22 = _local20.body2;
_local23 = _local21.m_angularVelocity;
_local24 = _local22.m_angularVelocity;
_local25 = _local21.m_linearVelocity;
_local26 = _local22.m_linearVelocity;
_local27 = _local21.m_invMass;
_local28 = _local21.m_invI;
_local29 = _local22.m_invMass;
_local30 = _local22.m_invI;
_local31 = _local20.normal.x;
_local32 = _local20.normal.y;
_local33 = _local32;
_local34 = -(_local31);
_local35 = _local20.friction;
_local37 = _local20.pointCount;
_local1 = 0;
while (_local1 < _local37) {
_local2 = _local20.points[_local1];
_local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y));
_local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x));
_local9 = ((_local7 * _local31) + (_local8 * _local32));
_local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias));
_local10 = ((_local7 * _local33) + (_local8 * _local34));
_local12 = (_local2.tangentMass * -(_local10));
_local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0);
_local11 = (_local13 - _local2.normalImpulse);
_local38 = (_local35 * _local2.normalImpulse);
_local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38);
_local12 = (_local14 - _local2.tangentImpulse);
_local15 = ((_local11 * _local31) + (_local12 * _local33));
_local16 = ((_local11 * _local32) + (_local12 * _local34));
_local25.x = (_local25.x - (_local27 * _local15));
_local25.y = (_local25.y - (_local27 * _local16));
_local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15))));
_local26.x = (_local26.x + (_local29 * _local15));
_local26.y = (_local26.y + (_local29 * _local16));
_local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15))));
_local2.normalImpulse = _local13;
_local2.tangentImpulse = _local14;
_local1++;
};
_local21.m_angularVelocity = _local23;
_local22.m_angularVelocity = _local24;
_local19++;
};
}
public function FinalizeVelocityConstraints():void{
var _local2:b2ContactConstraint;
var _local3:b2Manifold;
var _local4:int;
var _local5:b2ManifoldPoint;
var _local6:b2ContactConstraintPoint;
var _local1:int;
while (_local1 < m_constraintCount) {
_local2 = m_constraints[_local1];
_local3 = _local2.manifold;
_local4 = 0;
while (_local4 < _local2.pointCount) {
_local5 = _local3.points[_local4];
_local6 = _local2.points[_local4];
_local5.normalImpulse = _local6.normalImpulse;
_local5.tangentImpulse = _local6.tangentImpulse;
_local4++;
};
_local1++;
};
}
}
}//package Box2D.Dynamics.Contacts
Section 53
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact)
package Box2D.Dynamics.Contacts {
import Box2D.Dynamics.*;
public class b2NullContact extends b2Contact {
override public function Evaluate(_arg1:b2ContactListener):void{
}
override public function GetManifolds():Array{
return (null);
}
}
}//package Box2D.Dynamics.Contacts
Section 54
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolyAndCircleContact extends b2Contact {
public var m_manifolds:Array;
public var m_manifold:b2Manifold;
public var m0:b2Manifold;
public static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape));
m_manifold.pointCount = 0;
var _local3:b2ManifoldPoint = m_manifold.points[0];
_local3.normalImpulse = 0;
_local3.tangentImpulse = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:int;
var _local3:b2Vec2;
var _local4:b2Vec2;
var _local5:b2ManifoldPoint;
var _local10:b2ManifoldPoint;
var _local11:Boolean;
var _local12:uint;
var _local13:int;
var _local6:b2Body = m_shape1.m_body;
var _local7:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf);
var _local8:Array = [false, false];
var _local9:b2ContactPoint = s_evalCP;
_local9.shape1 = m_shape1;
_local9.shape2 = m_shape2;
_local9.friction = m_friction;
_local9.restitution = m_restitution;
if (m_manifold.pointCount > 0){
_local2 = 0;
while (_local2 < m_manifold.pointCount) {
_local10 = m_manifold.points[_local2];
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = false;
_local12 = _local10.id._key;
_local13 = 0;
while (_local13 < m0.pointCount) {
if (_local8[_local13] == true){
} else {
_local5 = m0.points[_local13];
if (_local5.id._key == _local12){
_local8[_local13] = true;
_local10.normalImpulse = _local5.normalImpulse;
_local10.tangentImpulse = _local5.tangentImpulse;
_local11 = true;
if (_arg1 != null){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Persist(_local9);
};
break;
};
};
_local13++;
};
if ((((_local11 == false)) && (!((_arg1 == null))))){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Add(_local9);
};
_local2++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (_arg1 == null){
return;
};
_local2 = 0;
while (_local2 < m0.pointCount) {
if (_local8[_local2]){
} else {
_local5 = m0.points[_local2];
_local9.position = _local6.GetWorldPoint(_local5.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m0.normal);
_local9.separation = _local5.separation;
_local9.id.key = _local5.id._key;
_arg1.Remove(_local9);
};
_local2++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2PolyAndCircleContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 55
//b2PolyAndConcaveArcContact (Box2D.Dynamics.Contacts.b2PolyAndConcaveArcContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolyAndConcaveArcContact extends b2PolygonContact {
private var m_arcManifolds:Array;
private var m_arcColl:Boolean;
public function b2PolyAndConcaveArcContact(_arg1:b2Shape, _arg2:b2Shape):void{
m_arcManifolds = [];
super(_arg1, _arg2);
}
private function enlargeManifolds(_arg1:Number):void{
var _local2:b2Manifold;
while (m_arcManifolds.length < _arg1) {
_local2 = new b2Manifold();
_local2.pointCount = 0;
_local2.points[0].normalImpulse = 0;
_local2.points[0].tangentImpulse = 0;
m_arcManifolds.push(_local2);
};
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:b2Body;
var _local3:b2Body;
var _local5:int;
var _local6:int;
var _local7:b2Manifold;
var _local9:b2ManifoldPoint;
var _local10:b2ManifoldPoint;
var _local11:Number;
var _local16:b2PolygonShape;
var _local17:b2ConcaveArcShape;
var _local19:b2Vec2;
var _local20:b2Vec2;
var _local30:Boolean;
var _local31:b2Vec2;
var _local32:b2Vec2;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local43:Number;
var _local44:Number;
var _local45:b2Vec2;
var _local46:Number;
var _local47:b2Vec2;
var _local48:b2Vec2;
var _local49:b2Vec2;
var _local50:b2Vec2;
var _local51:Number;
var _local52:Number;
var _local53:b2Vec2;
var _local54:Number;
var _local55:Number;
var _local56:b2Vec2;
var _local57:Number;
var _local58:Number;
var _local59:Number;
var _local60:Number;
var _local61:b2ManifoldPoint;
var _local62:*;
_local2 = m_shape1.m_body;
_local3 = m_shape2.m_body;
var _local4:uint = b2Collision.b2_nullFeature;
var _local8:Array = [];
if (!m_arcColl){
_local5 = 0;
while (_local5 < m_manifoldCount) {
_local6 = 0;
while (_local6 < m_manifolds[_local5].pointCount) {
_local10 = m_manifolds[_local5].points[_local6];
_local9 = new b2ManifoldPoint();
_local8[_local10.id.key] = _local9;
_local9.normalImpulse = _local10.normalImpulse;
_local9.tangentImpulse = _local10.tangentImpulse;
_local6++;
};
_local5++;
};
if ((((m_manifoldCount == 1)) && ((m_manifolds[0].pointCount == 1)))){
_local11 = m_manifolds[0].points[0].id.key;
} else {
_local11 = -1;
};
} else {
_local5 = 0;
while (_local5 < m_manifoldCount) {
_local6 = 0;
while (_local6 < m_arcManifolds[_local5].pointCount) {
_local10 = m_arcManifolds[_local5].points[_local6];
_local9 = new b2ManifoldPoint();
_local8[_local10.id.key] = _local9;
_local9.normalImpulse = _local10.normalImpulse;
_local9.tangentImpulse = _local10.tangentImpulse;
_local6++;
};
_local5++;
};
if ((((m_manifoldCount == 1)) && ((m_arcManifolds[0].pointCount == 1)))){
_local11 = m_arcManifolds[0].points[0].id.key;
} else {
_local11 = -1;
};
};
super.Evaluate(_arg1);
var _local12:Number = m_manifoldCount;
if (m_manifoldCount == 0){
return;
};
_local9 = m_manifolds[0].points[0];
var _local13:Features = _local9.id.features;
var _local14:Number = (_local13.flip) ? _local13.referenceEdge : _local13.incidentEdge;
var _local15:Number = -(Number.MAX_VALUE);
if ((((((m_manifoldCount == 1)) && (!((_local14 == 0))))) && ((_local9.separation < 0)))){
_local15 = _local9.separation;
};
_local16 = (m_shape1 as b2PolygonShape);
_local17 = (m_shape2 as b2ConcaveArcShape);
var _local18:Number = Number.MAX_VALUE;
_local19 = b2Math.b2MulXT(_local2.m_xf, b2Math.b2MulX(_local3.m_xf, _local17.m_arcCenter));
_local20 = b2Math.b2MulX(_local3.m_xf, _local17.m_vertices[0]);
var _local21:b2Vec2 = _local20.Copy();
_local20 = b2Math.b2MulXT(_local2.m_xf, _local20);
var _local22:b2Vec2 = b2Math.b2MulX(_local3.m_xf, _local17.m_vertices[1]);
var _local23:b2Vec2 = _local22.Copy();
_local22 = b2Math.b2MulXT(_local2.m_xf, _local22);
var _local24:b2Vec2 = b2Math.b2MulTMV(_local2.m_xf.R, b2Math.b2MulMV(_local3.m_xf.R, _local17.m_normals[0].Copy()));
var _local25:Array = [_local21, _local23];
var _local26:Array = [_local20, _local22];
var _local27:Boolean;
m_manifoldCount = 0;
var _local28:Array = [-1, -1];
var _local29:Array = [-1, -1];
if (_local14 == 0){
_local5 = 0;
while (_local5 < 2) {
_local43 = -(Number.MAX_VALUE);
_local44 = -1;
_local45 = _local26[_local5];
if (_local5 == 0){
_local47 = b2Math.b2MulTMV(_local2.m_xf.R, b2Math.b2MulMV(_local3.m_xf.R, _local17.m_normals[(_local17.m_vertexCount - 1)]));
_local48 = b2Math.SubtractVV(_local19, _local45);
_local48.Normalize();
} else {
_local48 = b2Math.b2MulTMV(_local2.m_xf.R, b2Math.b2MulMV(_local3.m_xf.R, _local17.m_normals[1]));
_local47 = b2Math.SubtractVV(_local19, _local45);
_local47.Normalize();
};
_local6 = 0;
while (_local6 < _local16.m_vertexCount) {
_local49 = _local16.m_vertices[_local6];
_local50 = _local16.m_normals[_local6];
if (((_local50.x * _local47.y) - (_local50.y * _local47.x)) < 0){
} else {
if (((_local50.x * _local48.y) - (_local50.y * _local48.x)) > 0){
} else {
_local51 = (_local45.x - _local49.x);
_local52 = (_local45.y - _local49.y);
_local46 = ((_local51 * _local50.x) + (_local52 * _local50.y));
if (_local46 > 0){
_local44 = -1;
break;
};
if (_local46 > _local43){
_local43 = _local46;
_local44 = _local6;
};
};
};
_local6++;
};
if (_local44 != -1){
_local50 = _local16.m_normals[_local44];
_local49 = _local16.m_vertices[_local44];
_local53 = _local16.m_vertices[(((_local44 + 1) < _local16.m_vertexCount)) ? (_local44 + 1) : 0];
_local54 = ((_local50.x * _local47.x) + (_local50.y * _local47.y));
_local55 = ((_local50.x * _local48.x) + (_local50.y * _local48.y));
if (_local54 < _local55){
_local56 = b2Math.b2CrossVF(_local47, 1);
} else {
_local56 = b2Math.b2CrossVF(_local48, -1);
};
_local57 = (((_local45.x - _local49.x) * _local50.x) + ((_local45.y - _local49.y) * _local50.y));
_local58 = ((_local56.x * _local50.x) + (_local56.y * _local50.y));
_local59 = (-(_local57) / _local58);
_local51 = (_local53.x - _local49.x);
_local52 = (_local53.y - _local49.y);
_local60 = ((((_local45.x + (_local59 * _local56.x)) - _local49.x) * _local51) + (((_local45.y + (_local59 * _local56.y)) - _local49.y) * _local52));
if ((((_local60 < 0)) || ((_local60 > ((_local51 * _local51) + (_local52 * _local52)))))){
_local44 = -1;
};
};
if (_local44 != -1){
_local29[_local5] = _local44;
if (_local5 == 0){
_local46 = (((_local53.x - _local45.x) * _local48.x) + ((_local53.y - _local45.y) * _local48.y));
if ((((_local43 < _local46)) && ((_local46 < 0)))){
_local28[_local5] = (((_local44 + 1) < _local16.m_vertexCount)) ? (_local44 + 1) : 0;
_local44 = -1;
};
} else {
_local46 = (((_local49.x - _local45.x) * _local47.x) + ((_local49.y - _local45.y) * _local47.y));
if ((((_local43 < _local46)) && ((_local46 < 0)))){
_local28[_local5] = _local44;
_local44 = -1;
};
};
};
if (_local44 != -1){
m_manifoldCount++;
enlargeManifolds(m_manifoldCount);
_local7 = m_arcManifolds[(m_manifoldCount - 1)];
_local7.pointCount = 1;
_local61 = _local7.points[0];
_local61.localPoint1.SetV(_local26[_local5]);
_local61.localPoint2.SetV(_local17.m_vertices[_local5]);
_local61.id.features.incidentEdge = _local4;
_local61.id.features.incidentVertex = _local5;
_local61.id.features.referenceEdge = _local44;
_local61.id.features.flip = 0;
_local61.separation = _local43;
_local61.normalImpulse = 0;
_local61.tangentImpulse = 0;
_local7.normal = b2Math.b2MulMV(_local2.m_xf.R, _local16.m_normals[_local44]);
_local18 = Math.min(_local18, _local61.separation);
};
_local5++;
};
};
if (_local29[1] == -1){
if (_local29[0] == -1){
_local38 = 1;
_local40 = 0;
} else {
_local38 = (_local16.m_vertexCount - 1);
_local40 = (((_local29[0] + 1) == _local16.m_vertexCount)) ? 0 : (_local29[0] + 1);
};
} else {
_local38 = 1;
_local40 = _local29[1];
};
var _local41:Boolean;
_local39 = _local40;
do {
_local30 = true;
_local31 = _local16.m_vertices[_local39];
if (_local29[0] != -1){
_local37 = _local29[0];
_local32 = _local16.m_vertices[(((_local37 + 1) == _local16.m_vertexCount)) ? 0 : (_local37 + 1)];
_local30 = ((_local30) && (((((_local31.x - _local32.x) * _local16.m_normals[_local37].y) - ((_local31.y - _local32.y) * _local16.m_normals[_local37].x)) > 0)));
};
if (_local29[1] != -1){
_local37 = _local29[1];
_local32 = _local16.m_vertices[_local37];
_local30 = ((_local30) && (((((_local31.x - _local32.x) * _local16.m_normals[_local37].y) - ((_local31.y - _local32.y) * _local16.m_normals[_local37].x)) < 0)));
};
if (((_local41) && (!(_local30)))){
_local40 = ((_local39 + _local38) % _local16.m_vertexCount);
};
if (_local30){
_local41 = true;
};
_local31 = new b2Vec2((_local16.m_vertices[_local39].x - _local19.x), (_local16.m_vertices[_local39].y - _local19.y));
_local33 = ((_local31.x * _local31.x) + (_local31.y * _local31.y));
_local34 = Math.sqrt(_local33);
_local35 = (_local17.m_radius - _local34);
_local36 = (((_local16.m_vertices[_local39].x - _local20.x) * _local24.x) + ((_local16.m_vertices[_local39].y - _local20.y) * _local24.y));
_local46 = Math.max(_local35, _local36);
_local18 = Math.min(_local18, _local46);
_local30 = ((_local30) && ((_local46 < 0)));
if (((((_local30) || ((_local39 == _local28[0])))) || ((_local39 == _local28[1])))){
m_manifoldCount++;
enlargeManifolds(m_manifoldCount);
_local7 = m_arcManifolds[(m_manifoldCount - 1)];
_local7.pointCount = 1;
_local61 = _local7.points[0];
_local61.id.features.incidentEdge = _local4;
_local61.id.features.incidentVertex = _local39;
_local61.id.features.referenceEdge = 0;
_local61.id.features.flip = 0;
_local61.normalImpulse = 0;
_local61.tangentImpulse = 0;
_local31.x = (_local31.x / _local34);
_local31.y = (_local31.y / _local34);
_local62 = _local2.m_xf.R;
_local7.normal.x = ((_local62.col1.x * _local31.x) + (_local62.col2.x * _local31.y));
_local7.normal.y = ((_local62.col1.y * _local31.x) + (_local62.col2.y * _local31.y));
_local31 = _local16.m_vertices[_local39];
_local61.localPoint1.SetV(_local31);
_local61.localPoint2.SetV(b2Math.b2MulXT(_local3.m_xf, b2Math.b2MulX(_local2.m_xf, _local31)));
_local61.separation = (_local17.m_radius - _local34);
};
_local39 = ((_local39 + _local38) % _local16.m_vertexCount);
} while (_local39 != _local40);
var _local42:int = m_manifoldCount;
if (_local15 > _local18){
m_arcColl = false;
m_manifoldCount = _local12;
_local5 = 0;
while (_local5 < m_manifoldCount) {
_local6 = 0;
while (_local6 < m_manifolds[_local5].pointCount) {
_local9 = m_manifolds[_local5].points[_local6];
_local10 = _local8[_local9.id.key];
if (_local10){
_local9.normalImpulse = _local10.normalImpulse;
_local9.tangentImpulse = _local10.tangentImpulse;
};
_local6++;
};
_local5++;
};
if (((((!((_local11 == -1))) && ((m_manifoldCount == 1)))) && ((m_manifolds[0].pointCount == 1)))){
_local9 = m_manifolds[0].points[0];
_local10 = _local8[_local11];
if (_local10){
_local9.normalImpulse = _local10.normalImpulse;
_local9.tangentImpulse = _local10.tangentImpulse;
};
};
} else {
m_arcColl = true;
m_manifoldCount = _local42;
_local5 = 0;
while (_local5 < m_manifoldCount) {
_local6 = 0;
while (_local6 < m_arcManifolds[_local5].pointCount) {
_local9 = m_arcManifolds[_local5].points[_local6];
_local10 = _local8[_local9.id.key];
if (_local10){
_local9.normalImpulse = _local10.normalImpulse;
_local9.tangentImpulse = _local10.tangentImpulse;
};
_local6++;
};
_local5++;
};
if (((((!((_local11 == -1))) && ((m_manifoldCount == 1)))) && ((m_arcManifolds[0].pointCount == 1)))){
_local9 = m_arcManifolds[0].points[0];
_local10 = _local8[_local11];
if (_local10){
_local9.normalImpulse = _local10.normalImpulse;
_local9.tangentImpulse = _local10.tangentImpulse;
};
};
};
}
override public function GetManifolds():Array{
if (m_arcColl){
return (m_arcManifolds);
};
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2PolyAndConcaveArcContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 56
//b2PolyAndStaticEdgeContact (Box2D.Dynamics.Contacts.b2PolyAndStaticEdgeContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolyAndStaticEdgeContact extends b2Contact {
public var m_manifolds:Array;
public var m_manifold:b2Manifold;
public var m0:b2Manifold;
public static const s_evalCP:b2ContactPoint = new b2ContactPoint();
private static const k_slop:Number = 4.94065645841247E-322;
public function b2PolyAndStaticEdgeContact(_arg1:b2Shape, _arg2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
var _local3:b2ManifoldPoint = m_manifold.points[0];
_local3.normalImpulse = 0;
_local3.tangentImpulse = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:int;
var _local3:b2Vec2;
var _local4:b2Vec2;
var _local5:b2ManifoldPoint;
var _local10:b2ManifoldPoint;
var _local11:Boolean;
var _local12:uint;
var _local13:int;
var _local6:b2Body = m_shape1.m_body;
var _local7:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2CollidePolygonAndStaticEdge(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2StaticEdgeShape), _local7.m_xf);
var _local8:Array = [false, false];
var _local9:b2ContactPoint = s_evalCP;
_local9.shape1 = m_shape1;
_local9.shape2 = m_shape2;
_local9.friction = m_friction;
_local9.restitution = m_restitution;
if (m_manifold.pointCount > 0){
_local2 = 0;
while (_local2 < m_manifold.pointCount) {
_local10 = m_manifold.points[_local2];
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = false;
_local12 = _local10.id._key;
_local13 = 0;
while (_local13 < m0.pointCount) {
if (_local8[_local13] == true){
} else {
_local5 = m0.points[_local13];
if (_local5.id._key == _local12){
_local8[_local13] = true;
_local10.normalImpulse = _local5.normalImpulse;
_local10.tangentImpulse = _local5.tangentImpulse;
_local11 = true;
if (_arg1 != null){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Persist(_local9);
};
break;
};
};
_local13++;
};
if ((((_local11 == false)) && (!((_arg1 == null))))){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Add(_local9);
};
_local2++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (_arg1 == null){
return;
};
_local2 = 0;
while (_local2 < m0.pointCount) {
if (_local8[_local2]){
} else {
_local5 = m0.points[_local2];
_local9.position = _local6.GetWorldPoint(_local5.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m0.normal);
_local9.separation = _local5.separation;
_local9.id.key = _local5.id._key;
_arg1.Remove(_local9);
};
_local2++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function b2CollidePolygonAndStaticEdge(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2StaticEdgeShape, _arg5:b2XForm):void{
var _local6:b2ManifoldPoint;
var _local7:b2Vec2;
var _local8:b2Vec2;
var _local9:b2Mat22;
var _local10:Number;
var _local11:Number;
var _local18:Number;
var _local19:Number;
var _local21:Boolean;
var _local22:int;
var _local26:Number;
var _local27:Number;
var _local32:Number;
var _local33:Number;
var _local35:int;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
_arg1.pointCount = 0;
_local9 = _arg3.R;
_local10 = (_arg4.m_v1.x - _arg3.position.x);
_local11 = (_arg4.m_v1.y - _arg3.position.y);
var _local12:Number = ((_local10 * _local9.col1.x) + (_local11 * _local9.col1.y));
var _local13:Number = ((_local10 * _local9.col2.x) + (_local11 * _local9.col2.y));
_local10 = (_arg4.m_v2.x - _arg3.position.x);
_local11 = (_arg4.m_v2.y - _arg3.position.y);
var _local14:Number = ((_local10 * _local9.col1.x) + (_local11 * _local9.col1.y));
var _local15:Number = ((_local10 * _local9.col2.x) + (_local11 * _local9.col2.y));
_local10 = _arg4.m_normal.x;
_local11 = _arg4.m_normal.y;
var _local16:Number = ((_local10 * _local9.col1.x) + (_local11 * _local9.col1.y));
var _local17:Number = ((_local10 * _local9.col2.x) + (_local11 * _local9.col2.y));
var _local20:Number = -(Infinity);
var _local23:int = _arg2.m_vertexCount;
var _local24:Array = _arg2.m_vertices;
var _local25:Array = _arg2.m_normals;
var _local28 = -1;
var _local29 = -1;
var _local30 = -1;
var _local31 = -1;
var _local34:Number = Infinity;
_local7 = _local24[(_local23 - 1)];
_local10 = (_local7.x - _local12);
_local11 = (_local7.y - _local13);
_local26 = ((_local10 * _local16) + (_local11 * _local17));
var _local36:int;
while (_local36 < _local23) {
_local7 = _local24[_local36];
_local8 = _local25[_local36];
_local10 = (_local12 - _local7.x);
_local11 = (_local13 - _local7.y);
_local18 = ((_local10 * _local8.x) + (_local11 * _local8.y));
_local10 = (_local14 - _local7.x);
_local11 = (_local15 - _local7.y);
_local19 = ((_local10 * _local8.x) + (_local11 * _local8.y));
if (_local19 < _local18){
if (_local19 > _local20){
_local20 = _local19;
_local21 = false;
_local22 = _local36;
};
} else {
if (_local18 > _local20){
_local20 = _local18;
_local21 = true;
_local22 = _local36;
};
};
_local27 = -(((_local10 * _local16) + (_local11 * _local17)));
if ((((_local27 >= 0)) && ((_local26 < 0)))){
_local30 = ((_local36)==0) ? (_local23 - 1) : (_local36 - 1);
_local31 = _local36;
_local33 = _local26;
} else {
if ((((_local27 < 0)) && ((_local26 >= 0)))){
_local28 = ((_local36)==0) ? (_local23 - 1) : (_local36 - 1);
_local29 = _local36;
_local32 = _local27;
};
};
if (_local27 < _local34){
_local34 = _local27;
_local35 = _local36;
};
_local26 = _local27;
_local36++;
};
if (_local28 == -1){
return;
};
if (_local20 > 0){
return;
};
if (_local20 > (_local34 + b2Settings.b2_linearSlop)){
_local8 = _local25[_local22];
if (_local21){
_local10 = _arg4.m_cornerDir1.x;
_local11 = _arg4.m_cornerDir1.y;
_local37 = ((_local10 * _local9.col1.x) + (_local11 * _local9.col1.y));
_local38 = ((_local10 * _local9.col2.x) + (_local11 * _local9.col2.y));
} else {
_local10 = _arg4.m_cornerDir2.x;
_local11 = _arg4.m_cornerDir2.y;
_local37 = -(((_local10 * _local9.col1.x) + (_local11 * _local9.col1.y)));
_local38 = -(((_local10 * _local9.col2.x) + (_local11 * _local9.col2.y)));
};
if (((_local8.x * _local37) + (_local8.y * _local38)) >= 0){
return;
};
_arg1.pointCount = 1;
_arg1.normal.Set(((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)), ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)));
_local6 = _arg1.points[0];
_local6.id.features.incidentEdge = _local22;
_local6.id.features.incidentVertex = b2Collision.b2_nullFeature;
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
if (_local21){
_local6.localPoint1.Set(_local12, _local13);
_local6.localPoint2.SetV(_arg4.m_v1);
} else {
_local6.localPoint1.Set(_local14, _local15);
_local6.localPoint2.SetV(_arg4.m_v2);
};
_local6.separation = _local20;
} else {
_arg1.normal.Set(-(_arg4.m_normal.x), -(_arg4.m_normal.y));
_local7 = _local24[_local29];
if (_local29 == _local30){
_arg1.pointCount = 1;
_local6 = _arg1.points[0];
_local6.id.features.incidentEdge = _local29;
_local6.id.features.incidentVertex = b2Collision.b2_nullFeature;
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
_local6.localPoint1.SetV(_local7);
_local6.localPoint2.Set((_arg3.position.x + ((_local9.col1.x * _local7.x) + (_local9.col2.x * _local7.y))), (_arg3.position.y + ((_local9.col1.y * _local7.x) + (_local9.col2.y * _local7.y))));
_local6.separation = _local32;
return;
};
_arg1.pointCount = 2;
_local10 = _arg4.m_direction.x;
_local11 = _arg4.m_direction.y;
_local39 = ((_local10 * _local9.col1.x) + (_local11 * _local9.col1.y));
_local40 = ((_local10 * _local9.col2.x) + (_local11 * _local9.col2.y));
_local41 = ((_local39 * (_local7.x - _local12)) + (_local40 * (_local7.y - _local13)));
_local31 = ((_local29)==(_local23 - 1)) ? 0 : (_local29 + 1);
if (_local31 != _local30){
_local30 = _local31;
_local8 = _local24[_local30];
_local10 = (_local8.x - _local12);
_local11 = (_local8.y - _local13);
_local33 = ((_local16 * _local10) + (_local17 * _local11));
_local42 = ((_local39 * _local10) + (_local40 * _local11));
} else {
_local8 = _local24[_local30];
_local42 = ((_local39 * (_local8.x - _local12)) + (_local40 * (_local8.y - _local13)));
};
_local6 = _arg1.points[0];
_local6.id.features.incidentEdge = _local29;
_local6.id.features.incidentVertex = b2Collision.b2_nullFeature;
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
if (_local41 > _arg4.m_length){
_local6.localPoint1.Set(_local14, _local15);
_local6.localPoint2.SetV(_arg4.m_v2);
_local10 = ((_arg4.m_length - _local42) / (_local41 - _local42));
if ((((_local10 > (100 * Number.MIN_VALUE))) && ((_local10 < 1)))){
_local6.separation = ((_local33 * (1 - _local10)) + (_local32 * _local10));
} else {
_local6.separation = _local32;
};
} else {
_local6.localPoint1.SetV(_local7);
_local6.localPoint2.Set((_arg3.position.x + ((_local9.col1.x * _local7.x) + (_local9.col2.x * _local7.y))), (_arg3.position.y + ((_local9.col1.y * _local7.x) + (_local9.col2.y * _local7.y))));
_local6.separation = _local32;
};
_local6 = _arg1.points[1];
_local6.id.features.incidentEdge = _local30;
_local6.id.features.incidentVertex = b2Collision.b2_nullFeature;
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
if (_local42 < 0){
_local6.localPoint1.Set(_local12, _local13);
_local6.localPoint2.SetV(_arg4.m_v1);
_local10 = (-(_local41) / (_local42 - _local41));
if ((((_local10 > (100 * Number.MIN_VALUE))) && ((_local10 < 1)))){
_local6.separation = ((_local32 * (1 - _local10)) + (_local33 * _local10));
} else {
_local6.separation = _local33;
};
} else {
_local6.localPoint1.SetV(_local8);
_local6.localPoint2.Set((_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))), (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))));
_local6.separation = _local33;
};
return;
};
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2PolyAndStaticEdgeContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 57
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolygonContact extends b2Contact {
public var m_manifolds:Array;
public var m0:b2Manifold;
public var m_manifold:b2Manifold;
public static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{
m0 = new b2Manifold();
m_manifolds = [new b2Manifold()];
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2ManifoldPoint;
var _local7:b2ContactPoint;
var _local8:int;
var _local10:b2ManifoldPoint;
var _local11:Boolean;
var _local12:uint;
var _local13:int;
var _local5:b2Body = m_shape1.m_body;
var _local6:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf);
var _local9:Array = [false, false];
_local7 = s_evalCP;
_local7.shape1 = m_shape1;
_local7.shape2 = m_shape2;
_local7.friction = m_friction;
_local7.restitution = m_restitution;
if (m_manifold.pointCount > 0){
_local8 = 0;
while (_local8 < m_manifold.pointCount) {
_local10 = m_manifold.points[_local8];
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = false;
_local12 = _local10.id._key;
_local13 = 0;
while (_local13 < m0.pointCount) {
if (_local9[_local13] == true){
} else {
_local4 = m0.points[_local13];
if (_local4.id._key == _local12){
_local9[_local13] = true;
_local10.normalImpulse = _local4.normalImpulse;
_local10.tangentImpulse = _local4.tangentImpulse;
_local11 = true;
if (_arg1 != null){
_local7.position = _local5.GetWorldPoint(_local10.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local10.separation;
_local7.id.key = _local12;
_arg1.Persist(_local7);
};
break;
};
};
_local13++;
};
if ((((_local11 == false)) && (!((_arg1 == null))))){
_local7.position = _local5.GetWorldPoint(_local10.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local10.separation;
_local7.id.key = _local12;
_arg1.Add(_local7);
};
_local8++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (_arg1 == null){
return;
};
_local8 = 0;
while (_local8 < m0.pointCount) {
if (_local9[_local8]){
} else {
_local4 = m0.points[_local8];
_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m0.normal);
_local7.separation = _local4.separation;
_local7.id.key = _local4.id._key;
_arg1.Remove(_local7);
};
_local8++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2PolygonContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 58
//b2StaticEdgeAndCircleContact (Box2D.Dynamics.Contacts.b2StaticEdgeAndCircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2StaticEdgeAndCircleContact extends b2Contact {
private var m_manifolds:Array;
public var m_manifold:b2Manifold;
private var m0:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2StaticEdgeAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
var _local3:b2ManifoldPoint = m_manifold.points[0];
_local3.normalImpulse = 0;
_local3.tangentImpulse = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2ManifoldPoint;
var _local8:b2ManifoldPoint;
var _local5:b2Body = m_shape1.m_body;
var _local6:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2CollideStaticEdgeAndCircle(m_manifold, (m_shape1 as b2StaticEdgeShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf);
var _local7:b2ContactPoint = s_evalCP;
_local7.shape1 = m_shape1;
_local7.shape2 = m_shape2;
_local7.friction = m_friction;
_local7.restitution = m_restitution;
if (m_manifold.pointCount > 0){
m_manifoldCount = 1;
_local8 = m_manifold.points[0];
if (m0.pointCount == 0){
_local8.normalImpulse = 0;
_local8.tangentImpulse = 0;
if (_arg1){
_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local8.separation;
_local7.id.key = _local8.id._key;
_arg1.Add(_local7);
};
} else {
_local4 = m0.points[0];
_local8.normalImpulse = _local4.normalImpulse;
_local8.tangentImpulse = _local4.tangentImpulse;
if (_arg1){
_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local8.separation;
_local7.id.key = _local8.id._key;
_arg1.Persist(_local7);
};
};
} else {
m_manifoldCount = 0;
if ((((m0.pointCount > 0)) && (_arg1))){
_local4 = m0.points[0];
_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m0.normal);
_local7.separation = _local4.separation;
_local7.id.key = _local4.id._key;
_arg1.Remove(_local7);
};
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2StaticEdgeAndCircleContact(_arg1, _arg2));
}
public static function b2CollideStaticEdgeAndCircle(_arg1:b2Manifold, _arg2:b2StaticEdgeShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:b2ManifoldPoint;
var _local10:b2Mat22;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local16:Number;
var _local17:Number;
_arg1.pointCount = 0;
_local10 = _arg5.R;
_local11 = _arg4.m_localPosition;
_local12 = (_arg5.position.x + ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)));
_local13 = (_arg5.position.y + ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)));
var _local14:Number = (((_local12 - _arg2.m_v1.x) * _arg2.m_direction.x) + ((_local13 - _arg2.m_v1.y) * _arg2.m_direction.y));
if (_local14 <= 0){
_local6 = (_local12 - _arg2.m_v1.x);
_local7 = (_local13 - _arg2.m_v1.y);
if (((_local6 * _arg2.m_cornerDir1.x) + (_local7 * _arg2.m_cornerDir1.y)) < 0){
return;
};
} else {
if (_local14 >= _arg2.m_length){
_local6 = (_local12 - _arg2.m_v2.x);
_local7 = (_local13 - _arg2.m_v2.y);
if (((_local6 * _arg2.m_cornerDir2.x) + (_local7 * _arg2.m_cornerDir2.y)) > 0){
return;
};
} else {
_local11 = _arg2.m_normal;
_local8 = (((_local12 - _arg2.m_v1.x) * _local11.x) + ((_local13 - _arg2.m_v1.y) * _local11.y));
if ((((_local8 > _arg4.m_radius)) || ((_local8 < -(_arg4.m_radius))))){
return;
};
_local8 = (_local8 - _arg4.m_radius);
_arg1.normal.x = _local11.x;
_arg1.normal.y = _local11.y;
_arg1.pointCount = 1;
_local9 = _arg1.points[0];
_local9.id.key = 0;
_local9.separation = _local8;
_local12 = (_local12 - (_arg4.m_radius * _local11.x));
_local13 = (_local13 - (_arg4.m_radius * _local11.y));
_local9.localPoint1.x = _local12;
_local9.localPoint1.y = _local13;
_local6 = (_local12 - _arg5.position.x);
_local7 = (_local13 - _arg5.position.y);
_local9.localPoint2.x = ((_local6 * _local10.col1.x) + (_local7 * _local10.col1.y));
_local9.localPoint2.y = ((_local6 * _local10.col2.x) + (_local7 * _local10.col2.y));
return;
};
};
var _local15:Number = ((_local6 * _local6) + (_local7 * _local7));
if (_local15 > (_arg4.m_radius * _arg4.m_radius)){
return;
};
if (_local15 < Number.MIN_VALUE){
_local8 = -(_arg4.m_radius);
_arg1.normal.SetV(_arg2.m_normal);
} else {
_local16 = Math.sqrt(_local15);
_local8 = (_local16 - _arg4.m_radius);
_local17 = (1 / _local16);
_arg1.normal.x = (_local17 * _local6);
_arg1.normal.y = (_local17 * _local7);
};
_arg1.pointCount = 1;
_local9 = _arg1.points[0];
_local9.id.key = 0;
_local9.separation = _local8;
_local12 = (_local12 - (_arg4.m_radius * _arg1.normal.x));
_local13 = (_local13 - (_arg4.m_radius * _arg1.normal.y));
_local9.localPoint1.x = _local12;
_local9.localPoint1.y = _local13;
_local6 = (_local12 - _arg5.position.x);
_local7 = (_local13 - _arg5.position.y);
_local9.localPoint2.x = ((_local6 * _local10.col1.x) + (_local7 * _local10.col1.y));
_local9.localPoint2.y = ((_local6 * _local10.col2.x) + (_local7 * _local10.col2.y));
}
}
}//package Box2D.Dynamics.Contacts
Section 59
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2DistanceJoint extends b2Joint {
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_bias:Number;
public var m_gamma:Number;
public var m_u:b2Vec2;
public var m_mass:Number;
public var m_impulse:Number;
public var m_dampingRatio:Number;
public var m_frequencyHz:Number;
public var m_length:Number;
public function b2DistanceJoint(_arg1:b2DistanceJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_u = new b2Vec2();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_length = _arg1.length;
m_frequencyHz = _arg1.frequencyHz;
m_dampingRatio = _arg1.dampingRatio;
m_impulse = 0;
m_gamma = 0;
m_bias = 0;
m_inv_dt = 0;
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Mat22;
var _local3:Number;
var _local4:b2Body;
var _local5:b2Body;
var _local6:Number;
var _local8:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
m_inv_dt = _arg1.inv_dt;
_local4 = m_body1;
_local5 = m_body2;
_local2 = _local4.m_xf.R;
_local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local4.m_sweep.localCenter.y);
_local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7));
_local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7));
_local6 = _local3;
_local2 = _local5.m_xf.R;
_local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y);
_local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9));
_local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9));
_local8 = _local3;
m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6);
m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7);
var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y)));
if (_local10 > b2Settings.b2_linearSlop){
m_u.Multiply((1 / _local10));
} else {
m_u.SetZero();
};
var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x));
var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x));
var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12));
m_mass = (1 / _local13);
if (m_frequencyHz > 0){
_local14 = (_local10 - m_length);
_local15 = ((2 * Math.PI) * m_frequencyHz);
_local16 = (((2 * m_mass) * m_dampingRatio) * _local15);
_local17 = ((m_mass * _local15) * _local15);
m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17))));
m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma);
m_mass = (1 / (_local13 + m_gamma));
};
if (_arg1.warmStarting){
m_impulse = (m_impulse * _arg1.dtRatio);
_local18 = (m_impulse * m_u.x);
_local19 = (m_impulse * m_u.y);
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19));
_local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18))));
_local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18));
_local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19));
_local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18))));
} else {
m_impulse = 0;
};
}
override public function GetReactionTorque():Number{
return (0);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = new b2Vec2();
_local1.SetV(m_u);
_local1.Multiply((m_inv_dt * m_impulse));
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local1:b2Mat22;
if (m_frequencyHz > 0){
return (true);
};
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local1 = _local2.m_xf.R;
var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5));
_local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5));
_local4 = _local6;
_local1 = _local3.m_xf.R;
var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8));
_local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8));
_local7 = _local6;
var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4);
var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5);
var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10)));
_local9 = (_local9 / _local11);
_local10 = (_local10 / _local11);
var _local12:Number = (_local11 - m_length);
_local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
var _local13:Number = (-(m_mass) * _local12);
m_u.Set(_local9, _local10);
var _local14:Number = (_local13 * m_u.x);
var _local15:Number = (_local13 * m_u.y);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14))));
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15));
_local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14))));
_local2.SynchronizeTransform();
_local3.SynchronizeTransform();
return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop));
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Mat22;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
_local2 = _local3.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6));
_local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6));
_local5 = _local7;
_local2 = _local4.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9));
_local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9));
_local8 = _local7;
var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6));
var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5));
var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9));
var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8));
var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11)));
var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse)));
m_impulse = (m_impulse + _local15);
var _local16:Number = (_local15 * m_u.x);
var _local17:Number = (_local15 * m_u.y);
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16))));
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17));
_local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
}
}
}//package Box2D.Dynamics.Joints
Section 60
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2DistanceJointDef extends b2JointDef {
public var localAnchor1:b2Vec2;
public var length:Number;
public var dampingRatio:Number;
public var localAnchor2:b2Vec2;
public var frequencyHz:Number;
public function b2DistanceJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_distanceJoint;
length = 1;
frequencyHz = 0;
dampingRatio = 0;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1.SetV(body1.GetLocalPoint(_arg3));
localAnchor2.SetV(body2.GetLocalPoint(_arg4));
var _local5:Number = (_arg4.x - _arg3.x);
var _local6:Number = (_arg4.y - _arg3.y);
length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
frequencyHz = 0;
dampingRatio = 0;
}
}
}//package Box2D.Dynamics.Joints
Section 61
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2GearJoint extends b2Joint {
public var m_ground2:b2Body;
public var m_groundAnchor1:b2Vec2;
public var m_groundAnchor2:b2Vec2;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_ratio:Number;
public var m_revolute2:b2RevoluteJoint;
public var m_force:Number;
public var m_mass:Number;
public var m_prismatic2:b2PrismaticJoint;
public var m_ground1:b2Body;
public var m_revolute1:b2RevoluteJoint;
public var m_prismatic1:b2PrismaticJoint;
public var m_constant:Number;
public var m_J:b2Jacobian;
public function b2GearJoint(_arg1:b2GearJointDef){
var _local4:Number;
var _local5:Number;
m_groundAnchor1 = new b2Vec2();
m_groundAnchor2 = new b2Vec2();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_J = new b2Jacobian();
super(_arg1);
var _local2:int = _arg1.joint1.m_type;
var _local3:int = _arg1.joint2.m_type;
m_revolute1 = null;
m_prismatic1 = null;
m_revolute2 = null;
m_prismatic2 = null;
m_ground1 = _arg1.joint1.m_body1;
m_body1 = _arg1.joint1.m_body2;
if (_local2 == b2Joint.e_revoluteJoint){
m_revolute1 = (_arg1.joint1 as b2RevoluteJoint);
m_groundAnchor1.SetV(m_revolute1.m_localAnchor1);
m_localAnchor1.SetV(m_revolute1.m_localAnchor2);
_local4 = m_revolute1.GetJointAngle();
} else {
m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint);
m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1);
m_localAnchor1.SetV(m_prismatic1.m_localAnchor2);
_local4 = m_prismatic1.GetJointTranslation();
};
m_ground2 = _arg1.joint2.m_body1;
m_body2 = _arg1.joint2.m_body2;
if (_local3 == b2Joint.e_revoluteJoint){
m_revolute2 = (_arg1.joint2 as b2RevoluteJoint);
m_groundAnchor2.SetV(m_revolute2.m_localAnchor1);
m_localAnchor2.SetV(m_revolute2.m_localAnchor2);
_local5 = m_revolute2.GetJointAngle();
} else {
m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint);
m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1);
m_localAnchor2.SetV(m_prismatic2.m_localAnchor2);
_local5 = m_prismatic2.GetJointTranslation();
};
m_ratio = _arg1.ratio;
m_constant = (_local4 + (m_ratio * _local5));
m_force = 0;
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:b2Mat22;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local15:Number;
var _local2:b2Body = m_ground1;
var _local3:b2Body = m_ground2;
var _local4:b2Body = m_body1;
var _local5:b2Body = m_body2;
var _local14:Number = 0;
m_J.SetZero();
if (m_revolute1){
m_J.angular1 = -1;
_local14 = (_local14 + _local4.m_invI);
} else {
_local10 = _local2.m_xf.R;
_local11 = m_prismatic1.m_localXAxis1;
_local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
_local10 = _local4.m_xf.R;
_local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y);
_local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9));
_local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9));
_local8 = _local13;
_local12 = ((_local8 * _local7) - (_local9 * _local6));
m_J.linear1.Set(-(_local6), -(_local7));
m_J.angular1 = -(_local12);
_local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12)));
};
if (m_revolute2){
m_J.angular2 = -(m_ratio);
_local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI));
} else {
_local10 = _local3.m_xf.R;
_local11 = m_prismatic2.m_localXAxis1;
_local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
_local10 = _local5.m_xf.R;
_local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x);
_local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y);
_local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9));
_local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9));
_local8 = _local13;
_local12 = ((_local8 * _local7) - (_local9 * _local6));
m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7));
m_J.angular2 = (-(m_ratio) * _local12);
_local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12))));
};
m_mass = (1 / _local14);
if (_arg1.warmStarting){
_local15 = (_arg1.dt * m_force);
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y));
_local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1));
_local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x));
_local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y));
_local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2));
} else {
m_force = 0;
};
}
override public function GetReactionTorque():Number{
var _local1:b2Mat22 = m_body2.m_xf.R;
var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x);
var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y);
var _local4:Number = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3));
_local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3));
_local2 = _local4;
_local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x))));
return (_local4);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y));
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local4:Number;
var _local5:Number;
var _local1:Number = 0;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
if (m_revolute1){
_local4 = m_revolute1.GetJointAngle();
} else {
_local4 = m_prismatic1.GetJointTranslation();
};
if (m_revolute2){
_local5 = m_revolute2.GetJointAngle();
} else {
_local5 = m_prismatic2.GetJointTranslation();
};
var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5)));
var _local7:Number = (-(m_mass) * _local6);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y));
_local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1));
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2));
_local2.SynchronizeTransform();
_local3.SynchronizeTransform();
return ((_local1 < b2Settings.b2_linearSlop));
}
public function GetRatio():Number{
return (m_ratio);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4);
m_force = (m_force + _local5);
var _local6:Number = (_arg1.dt * _local5);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2));
}
}
}//package Box2D.Dynamics.Joints
Section 62
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef)
package Box2D.Dynamics.Joints {
public class b2GearJointDef extends b2JointDef {
public var joint1:b2Joint;
public var joint2:b2Joint;
public var ratio:Number;
public function b2GearJointDef(){
type = b2Joint.e_gearJoint;
joint1 = null;
joint2 = null;
ratio = 1;
}
}
}//package Box2D.Dynamics.Joints
Section 63
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
public class b2Jacobian {
public var linear1:b2Vec2;
public var linear2:b2Vec2;
public var angular1:Number;
public var angular2:Number;
public function b2Jacobian(){
linear1 = new b2Vec2();
linear2 = new b2Vec2();
super();
}
public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{
linear1.SetV(_arg1);
angular1 = _arg2;
linear2.SetV(_arg3);
angular2 = _arg4;
}
public function SetZero():void{
linear1.SetZero();
angular1 = 0;
linear2.SetZero();
angular2 = 0;
}
public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{
return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4)));
}
}
}//package Box2D.Dynamics.Joints
Section 64
//b2Joint (Box2D.Dynamics.Joints.b2Joint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2Joint {
public var m_islandFlag:Boolean;
public var m_body1:b2Body;
public var m_prev:b2Joint;
public var m_next:b2Joint;
public var m_type:int;
public var m_collideConnected:Boolean;
public var m_node1:b2JointEdge;
public var m_node2:b2JointEdge;
public var m_inv_dt:Number;
public var m_userData;
public var m_body2:b2Body;
public static const e_unknownJoint:int = 0;
public static const e_inactiveLimit:int = 0;
public static const e_atUpperLimit:int = 2;
public static const e_atLowerLimit:int = 1;
public static const e_gearJoint:int = 6;
public static const e_revoluteJoint:int = 1;
public static const e_equalLimits:int = 3;
public static const e_distanceJoint:int = 3;
public static const e_pulleyJoint:int = 4;
public static const e_prismaticJoint:int = 2;
public static const e_mouseJoint:int = 5;
public function b2Joint(_arg1:b2JointDef){
m_node1 = new b2JointEdge();
m_node2 = new b2JointEdge();
super();
m_type = _arg1.type;
m_prev = null;
m_next = null;
m_body1 = _arg1.body1;
m_body2 = _arg1.body2;
m_collideConnected = _arg1.collideConnected;
m_islandFlag = false;
m_userData = _arg1.userData;
}
public function GetBody2():b2Body{
return (m_body2);
}
public function GetAnchor1():b2Vec2{
return (null);
}
public function GetAnchor2():b2Vec2{
return (null);
}
public function GetNext():b2Joint{
return (m_next);
}
public function GetType():int{
return (m_type);
}
public function InitVelocityConstraints(_arg1:b2TimeStep):void{
}
public function GetReactionTorque():Number{
return (0);
}
public function GetUserData(){
return (m_userData);
}
public function GetReactionForce():b2Vec2{
return (null);
}
public function SolvePositionConstraints():Boolean{
return (false);
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetBody1():b2Body{
return (m_body1);
}
public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
}
public function InitPositionConstraints():void{
}
public static function Destroy(_arg1:b2Joint, _arg2):void{
}
public static function Create(_arg1:b2JointDef, _arg2):b2Joint{
var _local3:b2Joint;
switch (_arg1.type){
case e_distanceJoint:
_local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef));
break;
case e_mouseJoint:
_local3 = new b2MouseJoint((_arg1 as b2MouseJointDef));
break;
case e_prismaticJoint:
_local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef));
break;
case e_revoluteJoint:
_local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef));
break;
case e_pulleyJoint:
_local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef));
break;
case e_gearJoint:
_local3 = new b2GearJoint((_arg1 as b2GearJointDef));
break;
default:
break;
};
return (_local3);
}
}
}//package Box2D.Dynamics.Joints
Section 65
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef)
package Box2D.Dynamics.Joints {
import Box2D.Dynamics.*;
public class b2JointDef {
public var body2:b2Body;
public var type:int;
public var userData;
public var collideConnected:Boolean;
public var body1:b2Body;
public function b2JointDef(){
type = b2Joint.e_unknownJoint;
userData = null;
body1 = null;
body2 = null;
collideConnected = false;
}
}
}//package Box2D.Dynamics.Joints
Section 66
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge)
package Box2D.Dynamics.Joints {
import Box2D.Dynamics.*;
public class b2JointEdge {
public var other:b2Body;
public var next:b2JointEdge;
public var prev:b2JointEdge;
public var joint:b2Joint;
}
}//package Box2D.Dynamics.Joints
Section 67
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2MouseJoint extends b2Joint {
private var K1:b2Mat22;
private var K:b2Mat22;
public var m_beta:Number;
public var m_mass:b2Mat22;
private var K2:b2Mat22;
public var m_target:b2Vec2;
public var m_gamma:Number;
public var m_impulse:b2Vec2;
public var m_C:b2Vec2;
public var m_localAnchor:b2Vec2;
public var m_maxForce:Number;
public function b2MouseJoint(_arg1:b2MouseJointDef){
var _local3:Number;
K = new b2Mat22();
K1 = new b2Mat22();
K2 = new b2Mat22();
m_localAnchor = new b2Vec2();
m_target = new b2Vec2();
m_impulse = new b2Vec2();
m_mass = new b2Mat22();
m_C = new b2Vec2();
super(_arg1);
m_target.SetV(_arg1.target);
var _local2:Number = (m_target.x - m_body2.m_xf.position.x);
_local3 = (m_target.y - m_body2.m_xf.position.y);
var _local4:b2Mat22 = m_body2.m_xf.R;
m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y));
m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y));
m_maxForce = _arg1.maxForce;
m_impulse.SetZero();
var _local5:Number = m_body2.m_mass;
var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz);
var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6);
var _local8:Number = ((_arg1.timeStep * _local5) * (_local6 * _local6));
m_gamma = (1 / (_local7 + _local8));
m_beta = (_local8 / (_local7 + _local8));
}
public function SetTarget(_arg1:b2Vec2):void{
if (m_body2.IsSleeping()){
m_body2.WakeUp();
};
m_target = _arg1;
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Mat22;
var _local4:Number;
var _local5:Number;
var _local7:Number;
var _local8:Number;
_local2 = m_body2;
_local3 = _local2.m_xf.R;
_local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x);
_local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y);
var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5));
_local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5));
_local4 = _local6;
_local7 = _local2.m_invMass;
_local8 = _local2.m_invI;
K1.col1.x = _local7;
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = _local7;
K2.col1.x = ((_local8 * _local5) * _local5);
K2.col2.x = ((-(_local8) * _local4) * _local5);
K2.col1.y = ((-(_local8) * _local4) * _local5);
K2.col2.y = ((_local8 * _local4) * _local4);
K.SetM(K1);
K.AddM(K2);
K.col1.x = (K.col1.x + m_gamma);
K.col2.y = (K.col2.y + m_gamma);
K.Invert(m_mass);
m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x);
m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y);
_local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98);
var _local9:Number = (_arg1.dt * m_impulse.x);
var _local10:Number = (_arg1.dt * m_impulse.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9))));
}
override public function GetAnchor1():b2Vec2{
return (m_target);
}
override public function GetReactionTorque():Number{
return (0);
}
override public function GetReactionForce():b2Vec2{
return (m_impulse);
}
override public function SolvePositionConstraints():Boolean{
return (true);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local3:b2Mat22;
var _local4:Number;
var _local5:Number;
var _local2:b2Body = m_body2;
_local3 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y);
_local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7));
_local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7));
_local6 = _local4;
var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7));
var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6));
_local3 = m_mass;
_local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x));
_local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y));
var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)));
var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)));
var _local12:Number = m_impulse.x;
var _local13:Number = m_impulse.y;
m_impulse.x = (m_impulse.x + _local10);
m_impulse.y = (m_impulse.y + _local11);
var _local14:Number = m_impulse.Length();
if (_local14 > m_maxForce){
m_impulse.Multiply((m_maxForce / _local14));
};
_local10 = (m_impulse.x - _local12);
_local11 = (m_impulse.y - _local13);
var _local15:Number = (_arg1.dt * _local10);
var _local16:Number = (_arg1.dt * _local11);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15))));
}
}
}//package Box2D.Dynamics.Joints
Section 68
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
public class b2MouseJointDef extends b2JointDef {
public var timeStep:Number;
public var target:b2Vec2;
public var maxForce:Number;
public var dampingRatio:Number;
public var frequencyHz:Number;
public function b2MouseJointDef(){
target = new b2Vec2();
super();
type = b2Joint.e_mouseJoint;
maxForce = 0;
frequencyHz = 5;
dampingRatio = 0.7;
timeStep = (1 / 60);
}
}
}//package Box2D.Dynamics.Joints
Section 69
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PrismaticJoint extends b2Joint {
public var m_limitForce:Number;
public var m_lowerTranslation:Number;
public var m_localXAxis1:b2Vec2;
public var m_refAngle:Number;
public var m_torque:Number;
public var m_motorForce:Number;
public var m_enableLimit:Boolean;
public var m_angularMass:Number;
public var m_maxMotorForce:Number;
public var m_localYAxis1:b2Vec2;
public var m_force:Number;
public var m_motorMass:Number;
public var m_upperTranslation:Number;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_limitState:int;
public var m_linearMass:Number;
public var m_motorJacobian:b2Jacobian;
public var m_limitPositionImpulse:Number;
public var m_motorSpeed:Number;
public var m_enableMotor:Boolean;
public var m_linearJacobian:b2Jacobian;
public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_localXAxis1 = new b2Vec2();
m_localYAxis1 = new b2Vec2();
m_linearJacobian = new b2Jacobian();
m_motorJacobian = new b2Jacobian();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_localXAxis1.SetV(_arg1.localAxis1);
m_localYAxis1.x = -(m_localXAxis1.y);
m_localYAxis1.y = m_localXAxis1.x;
m_refAngle = _arg1.referenceAngle;
m_linearJacobian.SetZero();
m_linearMass = 0;
m_force = 0;
m_angularMass = 0;
m_torque = 0;
m_motorJacobian.SetZero();
m_motorMass = 0;
m_motorForce = 0;
m_limitForce = 0;
m_limitPositionImpulse = 0;
m_lowerTranslation = _arg1.lowerTranslation;
m_upperTranslation = _arg1.upperTranslation;
m_maxMotorForce = _arg1.maxMotorForce;
m_motorSpeed = _arg1.motorSpeed;
m_enableLimit = _arg1.enableLimit;
m_enableMotor = _arg1.enableMotor;
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local6:Number;
var _local8:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
var _local4:Number = _local2.m_invMass;
var _local5:Number = _local3.m_invMass;
_local6 = _local2.m_invI;
var _local7:Number = _local3.m_invI;
var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9);
m_force = (m_force + _local10);
var _local11:Number = (_arg1.dt * _local10);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2));
var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity);
var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12);
m_torque = (m_torque + _local13);
var _local14:Number = (_arg1.dt * _local13);
_local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14));
if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
_local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed);
_local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15);
_local17 = m_motorForce;
m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce);
_local16 = (m_motorForce - _local17);
_local11 = (_arg1.dt * _local16);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2));
};
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
_local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18);
if (m_limitState == e_equalLimits){
m_limitForce = (m_limitForce + _local19);
} else {
if (m_limitState == e_atLowerLimit){
_local8 = m_limitForce;
m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0);
_local19 = (m_limitForce - _local8);
} else {
if (m_limitState == e_atUpperLimit){
_local8 = m_limitForce;
m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0);
_local19 = (m_limitForce - _local8);
};
};
};
_local11 = (_arg1.dt * _local19);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2));
};
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
public function GetUpperLimit():Number{
return (m_upperTranslation);
}
public function GetLowerLimit():Number{
return (m_lowerTranslation);
}
public function EnableMotor(_arg1:Boolean):void{
m_enableMotor = _arg1;
}
public function GetJointTranslation():Number{
var _local3:b2Mat22;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1);
var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2);
var _local6:Number = (_local5.x - _local4.x);
var _local7:Number = (_local5.y - _local4.y);
var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1);
var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7));
return (_local9);
}
public function GetMotorSpeed():Number{
return (m_motorSpeed);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Mat22 = m_body1.m_xf.R;
var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y)));
var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y)));
var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y)));
var _local5:Number = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y)));
return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5))));
}
override public function SolvePositionConstraints():Boolean{
var _local1:Number;
var _local2:Number;
var _local9:b2Mat22;
var _local10:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
var _local5:Number = _local3.m_invMass;
var _local6:Number = _local4.m_invMass;
var _local7:Number = _local3.m_invI;
var _local8:Number = _local4.m_invI;
_local9 = _local3.m_xf.R;
var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local12:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12));
_local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12));
_local11 = _local10;
_local9 = _local4.m_xf.R;
var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local14:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14));
_local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14));
_local13 = _local10;
var _local15:Number = (_local3.m_sweep.c.x + _local11);
var _local16:Number = (_local3.m_sweep.c.y + _local12);
var _local17:Number = (_local4.m_sweep.c.x + _local13);
var _local18:Number = (_local4.m_sweep.c.y + _local14);
var _local19:Number = (_local17 - _local15);
var _local20:Number = (_local18 - _local16);
_local9 = _local3.m_xf.R;
var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y));
var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y));
var _local23:Number = ((_local21 * _local19) + (_local22 * _local20));
_local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
var _local24:Number = (-(m_linearMass) * _local23);
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y));
_local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2));
var _local25:Number = b2Math.b2Abs(_local23);
var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle);
_local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
var _local27:Number = (-(m_angularMass) * _local26);
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
var _local28:Number = b2Math.b2Abs(_local26);
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local9 = _local3.m_xf.R;
_local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
_local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12));
_local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12));
_local11 = _local10;
_local9 = _local4.m_xf.R;
_local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
_local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14));
_local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14));
_local13 = _local10;
_local15 = (_local3.m_sweep.c.x + _local11);
_local16 = (_local3.m_sweep.c.y + _local12);
_local17 = (_local4.m_sweep.c.x + _local13);
_local18 = (_local4.m_sweep.c.y + _local14);
_local19 = (_local17 - _local15);
_local20 = (_local18 - _local16);
_local9 = _local3.m_xf.R;
_local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y));
_local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y));
_local31 = ((_local29 * _local19) + (_local30 * _local20));
_local32 = 0;
if (m_limitState == e_equalLimits){
_local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
_local32 = (-(m_motorMass) * _local1);
_local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26));
} else {
if (m_limitState == e_atLowerLimit){
_local1 = (_local31 - m_lowerTranslation);
_local25 = b2Math.b2Max(_local25, -(_local1));
_local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local32 = (-(m_motorMass) * _local1);
_local2 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0);
_local32 = (m_limitPositionImpulse - _local2);
} else {
if (m_limitState == e_atUpperLimit){
_local1 = (_local31 - m_upperTranslation);
_local25 = b2Math.b2Max(_local25, _local1);
_local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection);
_local32 = (-(m_motorMass) * _local1);
_local2 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0);
_local32 = (m_limitPositionImpulse - _local2);
};
};
};
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y));
_local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
};
return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop))));
}
public function SetMotorSpeed(_arg1:Number):void{
m_motorSpeed = _arg1;
}
public function GetJointSpeed():Number{
var _local3:b2Mat22;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
_local3 = _local1.m_xf.R;
var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5));
_local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5));
_local4 = _local6;
_local3 = _local2.m_xf.R;
var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8));
_local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8));
_local7 = _local6;
var _local9:Number = (_local1.m_sweep.c.x + _local4);
var _local10:Number = (_local1.m_sweep.c.y + _local5);
var _local11:Number = (_local2.m_sweep.c.x + _local7);
var _local12:Number = (_local2.m_sweep.c.y + _local8);
var _local13:Number = (_local11 - _local9);
var _local14:Number = (_local12 - _local10);
var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1);
var _local16:b2Vec2 = _local1.m_linearVelocity;
var _local17:b2Vec2 = _local2.m_linearVelocity;
var _local18:Number = _local1.m_angularVelocity;
var _local19:Number = _local2.m_angularVelocity;
var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4)))));
return (_local20);
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local5:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local10:Number = _local2.m_invMass;
var _local11:Number = _local3.m_invMass;
var _local12:Number = _local2.m_invI;
var _local13:Number = _local3.m_invI;
_local4 = _local2.m_xf.R;
var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y));
var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y));
var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x);
var _local17:Number = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y);
m_linearJacobian.linear1.x = -(_local14);
m_linearJacobian.linear1.y = -(_local15);
m_linearJacobian.linear2.x = _local14;
m_linearJacobian.linear2.y = _local15;
m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14)));
m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14));
m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2));
m_linearMass = (1 / m_linearMass);
m_angularMass = (_local12 + _local13);
if (m_angularMass > Number.MIN_VALUE){
m_angularMass = (1 / m_angularMass);
};
if (((m_enableLimit) || (m_enableMotor))){
_local4 = _local2.m_xf.R;
_local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y));
_local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y));
m_motorJacobian.linear1.x = -(_local18);
m_motorJacobian.linear1.y = -(_local19);
m_motorJacobian.linear2.x = _local18;
m_motorJacobian.linear2.y = _local19;
m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18)));
m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18));
m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2));
m_motorMass = (1 / m_motorMass);
if (m_enableLimit){
_local20 = (_local16 - _local6);
_local21 = (_local17 - _local7);
_local22 = ((_local18 * _local20) + (_local19 * _local21));
if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){
m_limitState = e_equalLimits;
} else {
if (_local22 <= m_lowerTranslation){
if (m_limitState != e_atLowerLimit){
m_limitForce = 0;
};
m_limitState = e_atLowerLimit;
} else {
if (_local22 >= m_upperTranslation){
if (m_limitState != e_atUpperLimit){
m_limitForce = 0;
};
m_limitState = e_atUpperLimit;
} else {
m_limitState = e_inactiveLimit;
m_limitForce = 0;
};
};
};
};
};
if (m_enableMotor == false){
m_motorForce = 0;
};
if (m_enableLimit == false){
m_limitForce = 0;
};
if (_arg1.warmStarting){
_local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x)));
_local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y)));
_local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x)));
_local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y)));
_local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1)));
_local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2)));
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28));
} else {
m_force = 0;
m_torque = 0;
m_limitForce = 0;
m_motorForce = 0;
};
m_limitPositionImpulse = 0;
}
public function GetMotorForce():Number{
return (m_motorForce);
}
public function EnableLimit(_arg1:Boolean):void{
m_enableLimit = _arg1;
}
public function SetMaxMotorForce(_arg1:Number):void{
m_maxMotorForce = _arg1;
}
override public function GetReactionTorque():Number{
return (m_torque);
}
public function IsLimitEnabled():Boolean{
return (m_enableLimit);
}
public function IsMotorEnabled():Boolean{
return (m_enableMotor);
}
public function SetLimits(_arg1:Number, _arg2:Number):void{
m_lowerTranslation = _arg1;
m_upperTranslation = _arg2;
}
}
}//package Box2D.Dynamics.Joints
Section 70
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PrismaticJointDef extends b2JointDef {
public var motorSpeed:Number;
public var localAxis1:b2Vec2;
public var referenceAngle:Number;
public var upperTranslation:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var enableLimit:Boolean;
public var enableMotor:Boolean;
public var maxMotorForce:Number;
public var lowerTranslation:Number;
public function b2PrismaticJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
localAxis1 = new b2Vec2();
super();
type = b2Joint.e_prismaticJoint;
localAxis1.Set(1, 0);
referenceAngle = 0;
enableLimit = false;
lowerTranslation = 0;
upperTranslation = 0;
enableMotor = false;
maxMotorForce = 0;
motorSpeed = 0;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1 = body1.GetLocalPoint(_arg3);
localAnchor2 = body2.GetLocalPoint(_arg3);
localAxis1 = body1.GetLocalVector(_arg4);
referenceAngle = (body2.GetAngle() - body1.GetAngle());
}
}
}//package Box2D.Dynamics.Joints
Section 71
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PulleyJoint extends b2Joint {
public var m_limitState1:int;
public var m_limitState2:int;
public var m_ground:b2Body;
public var m_maxLength2:Number;
public var m_maxLength1:Number;
public var m_limitPositionImpulse1:Number;
public var m_limitPositionImpulse2:Number;
public var m_force:Number;
public var m_constant:Number;
public var m_positionImpulse:Number;
public var m_state:int;
public var m_ratio:Number;
public var m_groundAnchor1:b2Vec2;
public var m_groundAnchor2:b2Vec2;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_limitMass1:Number;
public var m_limitMass2:Number;
public var m_pulleyMass:Number;
public var m_u1:b2Vec2;
public var m_limitForce1:Number;
public var m_limitForce2:Number;
public var m_u2:b2Vec2;
public static const b2_minPulleyLength:Number = 2;
public function b2PulleyJoint(_arg1:b2PulleyJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_groundAnchor1 = new b2Vec2();
m_groundAnchor2 = new b2Vec2();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_u1 = new b2Vec2();
m_u2 = new b2Vec2();
super(_arg1);
m_ground = m_body1.m_world.m_groundBody;
m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x);
m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y);
m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x);
m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_ratio = _arg1.ratio;
m_constant = (_arg1.length1 + (m_ratio * _arg1.length2));
m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength)));
m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio));
m_force = 0;
m_limitForce1 = 0;
m_limitForce2 = 0;
}
public function GetGroundAnchor2():b2Vec2{
var _local1:b2Vec2 = m_ground.m_xf.position.Copy();
_local1.Add(m_groundAnchor2);
return (_local1);
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = m_u2.Copy();
_local1.Multiply(m_force);
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local3:b2Mat22;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
var _local23:Number = 0;
if (m_state == e_atUpperLimit){
_local3 = _local1.m_xf.R;
_local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9));
_local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9));
_local8 = _local22;
_local3 = _local2.m_xf.R;
_local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
_local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11));
_local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11));
_local10 = _local22;
_local12 = (_local1.m_sweep.c.x + _local8);
_local13 = (_local1.m_sweep.c.y + _local9);
_local14 = (_local2.m_sweep.c.x + _local10);
_local15 = (_local2.m_sweep.c.y + _local11);
m_u1.Set((_local12 - _local4), (_local13 - _local5));
m_u2.Set((_local14 - _local6), (_local15 - _local7));
_local16 = m_u1.Length();
_local17 = m_u2.Length();
if (_local16 > b2Settings.b2_linearSlop){
m_u1.Multiply((1 / _local16));
} else {
m_u1.SetZero();
};
if (_local17 > b2Settings.b2_linearSlop){
m_u2.Multiply((1 / _local17));
} else {
m_u2.SetZero();
};
_local18 = ((m_constant - _local16) - (m_ratio * _local17));
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_pulleyMass) * _local18);
_local20 = m_positionImpulse;
m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19));
_local19 = (m_positionImpulse - _local20);
_local12 = (-(_local19) * m_u1.x);
_local13 = (-(_local19) * m_u1.y);
_local14 = ((-(m_ratio) * _local19) * m_u2.x);
_local15 = ((-(m_ratio) * _local19) * m_u2.y);
_local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12));
_local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13));
_local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12))));
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14))));
_local1.SynchronizeTransform();
_local2.SynchronizeTransform();
};
if (m_limitState1 == e_atUpperLimit){
_local3 = _local1.m_xf.R;
_local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9));
_local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9));
_local8 = _local22;
_local12 = (_local1.m_sweep.c.x + _local8);
_local13 = (_local1.m_sweep.c.y + _local9);
m_u1.Set((_local12 - _local4), (_local13 - _local5));
_local16 = m_u1.Length();
if (_local16 > b2Settings.b2_linearSlop){
m_u1.x = (m_u1.x * (1 / _local16));
m_u1.y = (m_u1.y * (1 / _local16));
} else {
m_u1.SetZero();
};
_local18 = (m_maxLength1 - _local16);
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_limitMass1) * _local18);
_local21 = m_limitPositionImpulse1;
m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19));
_local19 = (m_limitPositionImpulse1 - _local21);
_local12 = (-(_local19) * m_u1.x);
_local13 = (-(_local19) * m_u1.y);
_local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12));
_local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13));
_local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12))));
_local1.SynchronizeTransform();
};
if (m_limitState2 == e_atUpperLimit){
_local3 = _local2.m_xf.R;
_local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
_local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11));
_local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11));
_local10 = _local22;
_local14 = (_local2.m_sweep.c.x + _local10);
_local15 = (_local2.m_sweep.c.y + _local11);
m_u2.Set((_local14 - _local6), (_local15 - _local7));
_local17 = m_u2.Length();
if (_local17 > b2Settings.b2_linearSlop){
m_u2.x = (m_u2.x * (1 / _local17));
m_u2.y = (m_u2.y * (1 / _local17));
} else {
m_u2.SetZero();
};
_local18 = (m_maxLength2 - _local17);
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_limitMass2) * _local18);
_local21 = m_limitPositionImpulse2;
m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19));
_local19 = (m_limitPositionImpulse2 - _local21);
_local14 = (-(_local19) * m_u2.x);
_local15 = (-(_local19) * m_u2.y);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14))));
_local2.SynchronizeTransform();
};
return ((_local23 < b2Settings.b2_linearSlop));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6));
_local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6));
_local5 = _local7;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local7;
var _local10:Number = (_local2.m_sweep.c.x + _local5);
var _local11:Number = (_local2.m_sweep.c.y + _local6);
var _local12:Number = (_local3.m_sweep.c.x + _local8);
var _local13:Number = (_local3.m_sweep.c.y + _local9);
var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
m_u1.Set((_local10 - _local14), (_local11 - _local15));
m_u2.Set((_local12 - _local16), (_local13 - _local17));
var _local18:Number = m_u1.Length();
var _local19:Number = m_u2.Length();
if (_local18 > b2Settings.b2_linearSlop){
m_u1.Multiply((1 / _local18));
} else {
m_u1.SetZero();
};
if (_local19 > b2Settings.b2_linearSlop){
m_u2.Multiply((1 / _local19));
} else {
m_u2.SetZero();
};
var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19));
if (_local20 > 0){
m_state = e_inactiveLimit;
m_force = 0;
} else {
m_state = e_atUpperLimit;
m_positionImpulse = 0;
};
if (_local18 < m_maxLength1){
m_limitState1 = e_inactiveLimit;
m_limitForce1 = 0;
} else {
m_limitState1 = e_atUpperLimit;
m_limitPositionImpulse1 = 0;
};
if (_local19 < m_maxLength2){
m_limitState2 = e_inactiveLimit;
m_limitForce2 = 0;
} else {
m_limitState2 = e_atUpperLimit;
m_limitPositionImpulse2 = 0;
};
var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x));
var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x));
m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21));
m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22));
m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2));
m_limitMass1 = (1 / m_limitMass1);
m_limitMass2 = (1 / m_limitMass2);
m_pulleyMass = (1 / m_pulleyMass);
if (_arg1.warmStarting){
_local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x);
_local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y);
_local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x);
_local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25))));
} else {
m_force = 0;
m_limitForce1 = 0;
m_limitForce2 = 0;
};
}
override public function GetReactionTorque():Number{
return (0);
}
public function GetRatio():Number{
return (m_ratio);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local8:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6));
_local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6));
_local5 = _local7;
_local4 = _local3.m_xf.R;
_local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local7;
if (m_state == e_atUpperLimit){
_local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6));
_local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5));
_local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9));
_local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8));
_local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13))));
_local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18);
_local20 = m_force;
m_force = b2Math.b2Max(0, (m_force + _local19));
_local19 = (m_force - _local20);
_local14 = ((-(_arg1.dt) * _local19) * m_u1.x);
_local15 = ((-(_arg1.dt) * _local19) * m_u1.y);
_local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x);
_local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
};
if (m_limitState1 == e_atUpperLimit){
_local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6));
_local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5));
_local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11)));
_local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18);
_local20 = m_limitForce1;
m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19));
_local19 = (m_limitForce1 - _local20);
_local14 = ((-(_arg1.dt) * _local19) * m_u1.x);
_local15 = ((-(_arg1.dt) * _local19) * m_u1.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14))));
};
if (m_limitState2 == e_atUpperLimit){
_local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9));
_local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8));
_local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13)));
_local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18);
_local20 = m_limitForce2;
m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19));
_local19 = (m_limitForce2 - _local20);
_local16 = ((-(_arg1.dt) * _local19) * m_u2.x);
_local17 = ((-(_arg1.dt) * _local19) * m_u2.y);
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
};
}
public function GetLength1():Number{
var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1);
var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local4:Number = (_local1.x - _local2);
var _local5:Number = (_local1.y - _local3);
return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))));
}
public function GetLength2():Number{
var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2);
var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
var _local4:Number = (_local1.x - _local2);
var _local5:Number = (_local1.y - _local3);
return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))));
}
public function GetGroundAnchor1():b2Vec2{
var _local1:b2Vec2 = m_ground.m_xf.position.Copy();
_local1.Add(m_groundAnchor1);
return (_local1);
}
}
}//package Box2D.Dynamics.Joints
Section 72
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PulleyJointDef extends b2JointDef {
public var maxLength1:Number;
public var maxLength2:Number;
public var length1:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var groundAnchor1:b2Vec2;
public var groundAnchor2:b2Vec2;
public var ratio:Number;
public var length2:Number;
public function b2PulleyJointDef(){
groundAnchor1 = new b2Vec2();
groundAnchor2 = new b2Vec2();
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_pulleyJoint;
groundAnchor1.Set(-1, 1);
groundAnchor2.Set(1, 1);
localAnchor1.Set(-1, 0);
localAnchor2.Set(1, 0);
length1 = 0;
maxLength1 = 0;
length2 = 0;
maxLength2 = 0;
ratio = 1;
collideConnected = true;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{
body1 = _arg1;
body2 = _arg2;
groundAnchor1.SetV(_arg3);
groundAnchor2.SetV(_arg4);
localAnchor1 = body1.GetLocalPoint(_arg5);
localAnchor2 = body2.GetLocalPoint(_arg6);
var _local8:Number = (_arg5.x - _arg3.x);
var _local9:Number = (_arg5.y - _arg3.y);
length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
var _local10:Number = (_arg6.x - _arg4.x);
var _local11:Number = (_arg6.y - _arg4.y);
length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
ratio = _arg7;
var _local12:Number = (length1 + (ratio * length2));
maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength));
maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio);
}
}
}//package Box2D.Dynamics.Joints
Section 73
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2RevoluteJoint extends b2Joint {
public var m_limitForce:Number;
public var m_pivotMass:b2Mat22;
public var m_motorForce:Number;
public var m_enableLimit:Boolean;
public var m_limitState:int;
public var m_motorMass:Number;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
private var K1:b2Mat22;
private var K2:b2Mat22;
private var K3:b2Mat22;
private var K:b2Mat22;
public var m_pivotForce:b2Vec2;
public var m_enableMotor:Boolean;
public var m_referenceAngle:Number;
public var m_limitPositionImpulse:Number;
public var m_motorSpeed:Number;
public var m_upperAngle:Number;
public var m_lowerAngle:Number;
public var m_maxMotorTorque:Number;
public static var tImpulse:b2Vec2 = new b2Vec2();
public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){
K = new b2Mat22();
K1 = new b2Mat22();
K2 = new b2Mat22();
K3 = new b2Mat22();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_pivotForce = new b2Vec2();
m_pivotMass = new b2Mat22();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_referenceAngle = _arg1.referenceAngle;
m_pivotForce.Set(0, 0);
m_motorForce = 0;
m_limitForce = 0;
m_limitPositionImpulse = 0;
m_lowerAngle = _arg1.lowerAngle;
m_upperAngle = _arg1.upperAngle;
m_maxMotorTorque = _arg1.maxMotorTorque;
m_motorSpeed = _arg1.motorSpeed;
m_enableLimit = _arg1.enableLimit;
m_enableMotor = _arg1.enableMotor;
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local5:Number;
var _local10:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7));
var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6));
var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12)));
var _local14:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12)));
m_pivotForce.x = (m_pivotForce.x + _local13);
m_pivotForce.y = (m_pivotForce.y + _local14);
var _local15:Number = (_arg1.dt * _local13);
_local16 = (_arg1.dt * _local14);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16));
_local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15))));
if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
_local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed);
_local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17);
_local19 = m_motorForce;
m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque);
_local18 = (m_motorForce - _local19);
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18));
};
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity);
_local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20);
if (m_limitState == e_equalLimits){
m_limitForce = (m_limitForce + _local21);
} else {
if (m_limitState == e_atLowerLimit){
_local10 = m_limitForce;
m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0);
_local21 = (m_limitForce - _local10);
} else {
if (m_limitState == e_atUpperLimit){
_local10 = m_limitForce;
m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0);
_local21 = (m_limitForce - _local10);
};
};
};
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21));
};
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
public function GetUpperLimit():Number{
return (m_upperAngle);
}
public function GetLowerLimit():Number{
return (m_lowerAngle);
}
public function EnableMotor(_arg1:Boolean):void{
m_enableMotor = _arg1;
}
public function GetMotorSpeed():Number{
return (m_motorSpeed);
}
override public function GetReactionForce():b2Vec2{
return (m_pivotForce);
}
override public function SolvePositionConstraints():Boolean{
var _local1:Number;
var _local2:Number;
var _local6:b2Mat22;
var _local25:Number;
var _local26:Number;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
var _local5:Number = 0;
_local6 = _local3.m_xf.R;
var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8));
_local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8));
_local7 = _local9;
_local6 = _local4.m_xf.R;
var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local11:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11));
_local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11));
_local10 = _local9;
var _local12:Number = (_local3.m_sweep.c.x + _local7);
var _local13:Number = (_local3.m_sweep.c.y + _local8);
var _local14:Number = (_local4.m_sweep.c.x + _local10);
var _local15:Number = (_local4.m_sweep.c.y + _local11);
var _local16:Number = (_local14 - _local12);
var _local17:Number = (_local15 - _local13);
_local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17)));
var _local18:Number = _local3.m_invMass;
var _local19:Number = _local4.m_invMass;
var _local20:Number = _local3.m_invI;
var _local21:Number = _local4.m_invI;
K1.col1.x = (_local18 + _local19);
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = (_local18 + _local19);
K2.col1.x = ((_local20 * _local8) * _local8);
K2.col2.x = ((-(_local20) * _local7) * _local8);
K2.col1.y = ((-(_local20) * _local7) * _local8);
K2.col2.y = ((_local20 * _local7) * _local7);
K3.col1.x = ((_local21 * _local11) * _local11);
K3.col2.x = ((-(_local21) * _local10) * _local11);
K3.col1.y = ((-(_local21) * _local10) * _local11);
K3.col2.y = ((_local21 * _local10) * _local10);
K.SetM(K1);
K.AddM(K2);
K.AddM(K3);
K.Solve(tImpulse, -(_local16), -(_local17));
var _local22:Number = tImpulse.x;
var _local23:Number = tImpulse.y;
_local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23));
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22))));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22))));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
var _local24:Number = 0;
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle);
_local26 = 0;
if (m_limitState == e_equalLimits){
_local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
_local26 = (-(m_motorMass) * _local2);
_local24 = b2Math.b2Abs(_local2);
} else {
if (m_limitState == e_atLowerLimit){
_local2 = (_local25 - m_lowerAngle);
_local24 = b2Math.b2Max(0, -(_local2));
_local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0);
_local26 = (-(m_motorMass) * _local2);
_local1 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0);
_local26 = (m_limitPositionImpulse - _local1);
} else {
if (m_limitState == e_atUpperLimit){
_local2 = (_local25 - m_upperAngle);
_local24 = b2Math.b2Max(0, _local2);
_local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection);
_local26 = (-(m_motorMass) * _local2);
_local1 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0);
_local26 = (m_limitPositionImpulse - _local1);
};
};
};
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
};
return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop))));
}
public function SetMotorSpeed(_arg1:Number):void{
m_motorSpeed = _arg1;
}
public function GetJointSpeed():Number{
return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity));
}
public function SetMaxMotorTorque(_arg1:Number):void{
m_maxMotorTorque = _arg1;
}
public function GetJointAngle():Number{
return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle));
}
public function GetMotorTorque():Number{
return (m_motorForce);
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Body;
var _local4:b2Mat22;
var _local5:Number;
var _local7:Number;
var _local14:Number;
_local2 = m_body1;
_local3 = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
_local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local10:Number = _local2.m_invMass;
var _local11:Number = _local3.m_invMass;
var _local12:Number = _local2.m_invI;
var _local13:Number = _local3.m_invI;
K1.col1.x = (_local10 + _local11);
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = (_local10 + _local11);
K2.col1.x = ((_local12 * _local7) * _local7);
K2.col2.x = ((-(_local12) * _local6) * _local7);
K2.col1.y = ((-(_local12) * _local6) * _local7);
K2.col2.y = ((_local12 * _local6) * _local6);
K3.col1.x = ((_local13 * _local9) * _local9);
K3.col2.x = ((-(_local13) * _local8) * _local9);
K3.col1.y = ((-(_local13) * _local8) * _local9);
K3.col2.y = ((_local13 * _local8) * _local8);
K.SetM(K1);
K.AddM(K2);
K.AddM(K3);
K.Invert(m_pivotMass);
m_motorMass = (1 / (_local12 + _local13));
if (m_enableMotor == false){
m_motorForce = 0;
};
if (m_enableLimit){
_local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle);
if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){
m_limitState = e_equalLimits;
} else {
if (_local14 <= m_lowerAngle){
if (m_limitState != e_atLowerLimit){
m_limitForce = 0;
};
m_limitState = e_atLowerLimit;
} else {
if (_local14 >= m_upperAngle){
if (m_limitState != e_atUpperLimit){
m_limitForce = 0;
};
m_limitState = e_atUpperLimit;
} else {
m_limitState = e_inactiveLimit;
m_limitForce = 0;
};
};
};
} else {
m_limitForce = 0;
};
if (_arg1.warmStarting){
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
} else {
m_pivotForce.SetZero();
m_motorForce = 0;
m_limitForce = 0;
};
m_limitPositionImpulse = 0;
}
public function EnableLimit(_arg1:Boolean):void{
m_enableLimit = _arg1;
}
override public function GetReactionTorque():Number{
return (m_limitForce);
}
public function IsLimitEnabled():Boolean{
return (m_enableLimit);
}
public function IsMotorEnabled():Boolean{
return (m_enableMotor);
}
public function SetLimits(_arg1:Number, _arg2:Number):void{
m_lowerAngle = _arg1;
m_upperAngle = _arg2;
}
}
}//package Box2D.Dynamics.Joints
Section 74
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2RevoluteJointDef extends b2JointDef {
public var upperAngle:Number;
public var enableMotor:Boolean;
public var referenceAngle:Number;
public var motorSpeed:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var enableLimit:Boolean;
public var lowerAngle:Number;
public var maxMotorTorque:Number;
public function b2RevoluteJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_revoluteJoint;
localAnchor1.Set(0, 0);
localAnchor2.Set(0, 0);
referenceAngle = 0;
lowerAngle = 0;
upperAngle = 0;
maxMotorTorque = 0;
motorSpeed = 0;
enableLimit = false;
enableMotor = false;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1 = body1.GetLocalPoint(_arg3);
localAnchor2 = body2.GetLocalPoint(_arg3);
referenceAngle = (body2.GetAngle() - body1.GetAngle());
}
}
}//package Box2D.Dynamics.Joints
Section 75
//b2Body (Box2D.Dynamics.b2Body)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import Box2D.Dynamics.Contacts.*;
public class b2Body {
public var m_next:b2Body;
public var m_xf:b2XForm;
public var m_contactList:b2ContactEdge;
public var m_angularVelocity:Number;
public var m_shapeList:b2Shape;
public var m_force:b2Vec2;
public var m_mass:Number;
public var m_sweep:b2Sweep;
public var m_torque:Number;
public var m_userData;
public var m_flags:uint;
public var m_world:b2World;
public var m_prev:b2Body;
public var m_invMass:Number;
public var m_type:int;
public var m_linearDamping:Number;
public var m_shapeCount:int;
public var m_angularDamping:Number;
public var m_invI:Number;
public var m_linearVelocity:b2Vec2;
public var m_sleepTime:Number;
public var m_jointList:b2JointEdge;
public var m_I:Number;
public static var e_fixedRotationFlag:uint = 64;
public static var e_frozenFlag:uint = 2;
public static var e_maxTypes:uint = 3;
public static var e_sleepFlag:uint = 8;
private static var s_massData:b2MassData = new b2MassData();
public static var e_bulletFlag:uint = 32;
public static var e_staticType:uint = 1;
public static var e_islandFlag:uint = 4;
public static var e_allowSleepFlag:uint = 16;
private static var s_xf1:b2XForm = new b2XForm();
public static var e_dynamicType:uint = 2;
public function b2Body(_arg1:b2BodyDef, _arg2:b2World){
m_xf = new b2XForm();
m_sweep = new b2Sweep();
m_linearVelocity = new b2Vec2();
m_force = new b2Vec2();
super();
m_flags = 0;
if (_arg1.isBullet){
m_flags = (m_flags | e_bulletFlag);
};
if (_arg1.fixedRotation){
m_flags = (m_flags | e_fixedRotationFlag);
};
if (_arg1.allowSleep){
m_flags = (m_flags | e_allowSleepFlag);
};
if (_arg1.isSleeping){
m_flags = (m_flags | e_sleepFlag);
};
m_world = _arg2;
m_xf.position.SetV(_arg1.position);
m_xf.R.Set(_arg1.angle);
m_sweep.localCenter.SetV(_arg1.massData.center);
m_sweep.t0 = 1;
m_sweep.a0 = (m_sweep.a = _arg1.angle);
var _local3:b2Mat22 = m_xf.R;
var _local4:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
m_jointList = null;
m_contactList = null;
m_prev = null;
m_next = null;
m_linearDamping = _arg1.linearDamping;
m_angularDamping = _arg1.angularDamping;
m_force.Set(0, 0);
m_torque = 0;
m_linearVelocity.SetZero();
m_angularVelocity = 0;
m_sleepTime = 0;
m_invMass = 0;
m_I = 0;
m_invI = 0;
m_mass = _arg1.massData.mass;
if (m_mass > 0){
m_invMass = (1 / m_mass);
};
if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
m_I = _arg1.massData.I;
};
if (m_I > 0){
m_invI = (1 / m_I);
};
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
m_userData = _arg1.userData;
m_shapeList = null;
m_shapeCount = 0;
}
public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{
return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x)))));
}
public function SetLinearVelocity(_arg1:b2Vec2):void{
m_linearVelocity.SetV(_arg1);
}
public function WakeUp():void{
m_flags = (m_flags & ~(e_sleepFlag));
m_sleepTime = 0;
}
public function GetLocalCenter():b2Vec2{
return (m_sweep.localCenter);
}
public function ApplyTorque(_arg1:Number):void{
if (IsSleeping()){
WakeUp();
};
m_torque = (m_torque + _arg1);
}
public function IsFrozen():Boolean{
return (((m_flags & e_frozenFlag) == e_frozenFlag));
}
public function IsDynamic():Boolean{
return ((m_type == e_dynamicType));
}
public function GetLinearVelocity():b2Vec2{
return (m_linearVelocity);
}
public function SynchronizeTransform():void{
m_xf.R.Set(m_sweep.a);
var _local1:b2Mat22 = m_xf.R;
var _local2:b2Vec2 = m_sweep.localCenter;
m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y)));
m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y)));
}
public function GetInertia():Number{
return (m_I);
}
public function IsSleeping():Boolean{
return (((m_flags & e_sleepFlag) == e_sleepFlag));
}
public function SetMassFromShapes():void{
var _local1:b2Shape;
if (m_world.m_lock == true){
return;
};
m_mass = 0;
m_invMass = 0;
m_I = 0;
m_invI = 0;
var _local2:Number = 0;
var _local3:Number = 0;
var _local4:b2MassData = s_massData;
_local1 = m_shapeList;
while (_local1) {
_local1.ComputeMass(_local4);
m_mass = (m_mass + _local4.mass);
_local2 = (_local2 + (_local4.mass * _local4.center.x));
_local3 = (_local3 + (_local4.mass * _local4.center.y));
m_I = (m_I + _local4.I);
_local1 = _local1.m_next;
};
if (m_mass > 0){
m_invMass = (1 / m_mass);
_local2 = (_local2 * m_invMass);
_local3 = (_local3 * m_invMass);
};
if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){
m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3))));
m_invI = (1 / m_I);
} else {
m_I = 0;
m_invI = 0;
};
m_sweep.localCenter.Set(_local2, _local3);
var _local5:b2Mat22 = m_xf.R;
var _local6:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y));
m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
_local1 = m_shapeList;
while (_local1) {
_local1.UpdateSweepRadius(m_sweep.localCenter);
_local1 = _local1.m_next;
};
var _local7:int = m_type;
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
if (_local7 != m_type){
_local1 = m_shapeList;
while (_local1) {
_local1.RefilterProxy(m_world.m_broadPhase, m_xf);
_local1 = _local1.m_next;
};
};
}
public function PutToSleep():void{
m_flags = (m_flags | e_sleepFlag);
m_sleepTime = 0;
m_linearVelocity.SetZero();
m_angularVelocity = 0;
m_force.SetZero();
m_torque = 0;
}
public function GetJointList():b2JointEdge{
return (m_jointList);
}
public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{
var _local3:b2Shape;
var _local7:Boolean;
if (m_world.m_lock == true){
return (true);
};
if (IsFrozen()){
return (false);
};
m_xf.R.Set(_arg2);
m_xf.position.SetV(_arg1);
var _local4:b2Mat22 = m_xf.R;
var _local5:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y));
m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
m_sweep.a0 = (m_sweep.a = _arg2);
var _local6:Boolean;
_local3 = m_shapeList;
while (_local3) {
_local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf);
if (_local7 == false){
_local6 = true;
break;
};
_local3 = _local3.m_next;
};
if (_local6 == true){
m_flags = (m_flags | e_frozenFlag);
m_linearVelocity.SetZero();
m_angularVelocity = 0;
_local3 = m_shapeList;
while (_local3) {
_local3.DestroyProxy(m_world.m_broadPhase);
_local3 = _local3.m_next;
};
return (false);
};
m_world.m_broadPhase.Commit();
return (true);
}
public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulXT(m_xf, _arg1));
}
public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{
if (IsSleeping()){
WakeUp();
};
m_force.x = (m_force.x + _arg1.x);
m_force.y = (m_force.y + _arg1.y);
m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)));
}
public function SynchronizeShapes():Boolean{
var _local4:b2Shape;
var _local1:b2XForm = s_xf1;
_local1.R.Set(m_sweep.a0);
var _local2:b2Mat22 = _local1.R;
var _local3:b2Vec2 = m_sweep.localCenter;
_local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y)));
_local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y)));
var _local5:Boolean;
_local4 = m_shapeList;
while (_local4) {
_local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf);
if (_local5 == false){
break;
};
_local4 = _local4.m_next;
};
if (_local5 == false){
m_flags = (m_flags | e_frozenFlag);
m_linearVelocity.SetZero();
m_angularVelocity = 0;
_local4 = m_shapeList;
while (_local4) {
_local4.DestroyProxy(m_world.m_broadPhase);
_local4 = _local4.m_next;
};
return (false);
};
return (true);
}
public function GetAngle():Number{
return (m_sweep.a);
}
public function GetXForm():b2XForm{
return (m_xf);
}
public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{
var _local2:b2Mat22 = m_xf.R;
var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y)));
_local3.x = (_local3.x + m_xf.position.x);
_local3.y = (_local3.y + m_xf.position.y);
return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x)))));
}
public function GetNext():b2Body{
return (m_next);
}
public function GetMass():Number{
return (m_mass);
}
public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{
if (IsSleeping()){
WakeUp();
};
m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x));
m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y));
m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))));
}
public function GetAngularVelocity():Number{
return (m_angularVelocity);
}
public function SetAngularVelocity(_arg1:Number):void{
m_angularVelocity = _arg1;
}
public function SetMass(_arg1:b2MassData):void{
var _local2:b2Shape;
var _local4:b2Vec2;
if (m_world.m_lock == true){
return;
};
m_invMass = 0;
m_I = 0;
m_invI = 0;
m_mass = _arg1.mass;
if (m_mass > 0){
m_invMass = (1 / m_mass);
};
if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
m_I = _arg1.I;
};
if (m_I > 0){
m_invI = (1 / m_I);
};
m_sweep.localCenter.SetV(_arg1.center);
var _local3:b2Mat22 = m_xf.R;
_local4 = m_sweep.localCenter;
m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
_local2 = m_shapeList;
while (_local2) {
_local2.UpdateSweepRadius(m_sweep.localCenter);
_local2 = _local2.m_next;
};
var _local5:int = m_type;
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
if (_local5 != m_type){
_local2 = m_shapeList;
while (_local2) {
_local2.RefilterProxy(m_world.m_broadPhase, m_xf);
_local2 = _local2.m_next;
};
};
}
public function IsStatic():Boolean{
return ((m_type == e_staticType));
}
public function GetWorldVector(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulMV(m_xf.R, _arg1));
}
public function GetShapeList():b2Shape{
return (m_shapeList);
}
public function Advance(_arg1:Number):void{
m_sweep.Advance(_arg1);
m_sweep.c.SetV(m_sweep.c0);
m_sweep.a = m_sweep.a0;
SynchronizeTransform();
}
public function SetBullet(_arg1:Boolean):void{
if (_arg1){
m_flags = (m_flags | e_bulletFlag);
} else {
m_flags = (m_flags & ~(e_bulletFlag));
};
}
public function CreateShape(_arg1:b2ShapeDef):b2Shape{
if (m_world.m_lock == true){
return (null);
};
var _local2:b2Shape = b2Shape.Create(_arg1, m_world.m_blockAllocator);
_local2.m_next = m_shapeList;
m_shapeList = _local2;
m_shapeCount++;
_local2.m_body = this;
_local2.CreateProxy(m_world.m_broadPhase, m_xf);
_local2.UpdateSweepRadius(m_sweep.localCenter);
return (_local2);
}
public function IsConnected(_arg1:b2Body):Boolean{
var _local2:b2JointEdge = m_jointList;
while (_local2) {
if (_local2.other == _arg1){
return ((_local2.joint.m_collideConnected == false));
};
_local2 = _local2.next;
};
return (false);
}
public function DestroyShape(_arg1:b2Shape):void{
if (m_world.m_lock == true){
return;
};
_arg1.DestroyProxy(m_world.m_broadPhase);
var _local2:b2Shape = m_shapeList;
var _local3:Boolean;
while (_local2 != null) {
if (_local2 == _arg1){
_local2 = _arg1.m_next;
_local3 = true;
break;
};
_local2 = _local2.m_next;
};
_arg1.m_body = null;
_arg1.m_next = null;
m_shapeCount--;
b2Shape.Destroy(_arg1, m_world.m_blockAllocator);
}
public function GetUserData(){
return (m_userData);
}
public function IsBullet():Boolean{
return (((m_flags & e_bulletFlag) == e_bulletFlag));
}
public function GetWorldCenter():b2Vec2{
return (m_sweep.c);
}
public function AllowSleeping(_arg1:Boolean):void{
if (_arg1){
m_flags = (m_flags | e_allowSleepFlag);
} else {
m_flags = (m_flags & ~(e_allowSleepFlag));
WakeUp();
};
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetLocalVector(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulTMV(m_xf.R, _arg1));
}
public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{
var _local2:b2Mat22 = m_xf.R;
var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y)));
_local3.x = (_local3.x + m_xf.position.x);
_local3.y = (_local3.y + m_xf.position.y);
return (_local3);
}
public function GetWorld():b2World{
return (m_world);
}
public function GetPosition():b2Vec2{
return (m_xf.position);
}
}
}//package Box2D.Dynamics
Section 76
//b2BodyDef (Box2D.Dynamics.b2BodyDef)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2BodyDef {
public var angularDamping:Number;
public var angle:Number;
public var isSleeping:Boolean;
public var position:b2Vec2;
public var isBullet:Boolean;
public var allowSleep:Boolean;
public var userData;
public var fixedRotation:Boolean;
public var linearDamping:Number;
public var massData:b2MassData;
public function b2BodyDef(){
massData = new b2MassData();
position = new b2Vec2();
super();
massData.center.SetZero();
massData.mass = 0;
massData.I = 0;
userData = null;
position.Set(0, 0);
angle = 0;
linearDamping = 0;
angularDamping = 0;
allowSleep = true;
isSleeping = false;
fixedRotation = false;
isBullet = false;
}
}
}//package Box2D.Dynamics
Section 77
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener)
package Box2D.Dynamics {
public class b2BoundaryListener {
public function Violation(_arg1:b2Body):void{
}
}
}//package Box2D.Dynamics
Section 78
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter)
package Box2D.Dynamics {
import Box2D.Collision.Shapes.*;
public class b2ContactFilter {
public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter);
;
public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{
var _local3:b2FilterData = _arg1.GetFilterData();
var _local4:b2FilterData = _arg2.GetFilterData();
if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){
return ((_local3.groupIndex > 0));
};
var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0))));
return (_local5);
}
}
}//package Box2D.Dynamics
Section 79
//b2ContactListener (Box2D.Dynamics.b2ContactListener)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Dynamics.Contacts.*;
public class b2ContactListener {
public function Add(_arg1:b2ContactPoint):void{
}
public function Remove(_arg1:b2ContactPoint):void{
}
public function Persist(_arg1:b2ContactPoint):void{
}
public function Result(_arg1:b2ContactResult):void{
}
}
}//package Box2D.Dynamics
Section 80
//b2ContactManager (Box2D.Dynamics.b2ContactManager)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2ContactManager extends b2PairCallback {
public var m_world:b2World;
public var m_destroyImmediate:Boolean;
public var m_nullContact:b2NullContact;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2ContactManager(){
m_nullContact = new b2NullContact();
super();
m_world = null;
m_destroyImmediate = false;
}
override public function PairRemoved(_arg1, _arg2, _arg3):void{
if (_arg3 == null){
return;
};
var _local4:b2Contact = (_arg3 as b2Contact);
if (_local4 == m_nullContact){
return;
};
Destroy(_local4);
}
public function Destroy(_arg1:b2Contact):void{
var _local7:b2Body;
var _local8:b2Body;
var _local9:Array;
var _local10:b2ContactPoint;
var _local11:int;
var _local12:b2Manifold;
var _local13:int;
var _local14:b2ManifoldPoint;
var _local15:b2Vec2;
var _local16:b2Vec2;
var _local2:b2Shape = _arg1.m_shape1;
var _local3:b2Shape = _arg1.m_shape2;
var _local4:int = _arg1.m_manifoldCount;
if ((((_local4 > 0)) && (m_world.m_contactListener))){
_local7 = _local2.m_body;
_local8 = _local3.m_body;
_local9 = _arg1.GetManifolds();
_local10 = s_evalCP;
_local10.shape1 = _arg1.m_shape1;
_local10.shape2 = _arg1.m_shape2;
_local10.friction = _arg1.m_friction;
_local10.restitution = _arg1.m_restitution;
_local11 = 0;
while (_local11 < _local4) {
_local12 = _local9[_local11];
_local10.normal.SetV(_local12.normal);
_local13 = 0;
while (_local13 < _local12.pointCount) {
_local14 = _local12.points[_local13];
_local10.position = _local7.GetWorldPoint(_local14.localPoint1);
_local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1);
_local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2);
_local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y));
_local10.separation = _local14.separation;
_local10.id.key = _local14.id._key;
m_world.m_contactListener.Remove(_local10);
_local13++;
};
_local11++;
};
};
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_world.m_contactList){
m_world.m_contactList = _arg1.m_next;
};
var _local5:b2Body = _local2.m_body;
var _local6:b2Body = _local3.m_body;
if (_arg1.m_node1.prev){
_arg1.m_node1.prev.next = _arg1.m_node1.next;
};
if (_arg1.m_node1.next){
_arg1.m_node1.next.prev = _arg1.m_node1.prev;
};
if (_arg1.m_node1 == _local5.m_contactList){
_local5.m_contactList = _arg1.m_node1.next;
};
if (_arg1.m_node2.prev){
_arg1.m_node2.prev.next = _arg1.m_node2.next;
};
if (_arg1.m_node2.next){
_arg1.m_node2.next.prev = _arg1.m_node2.prev;
};
if (_arg1.m_node2 == _local6.m_contactList){
_local6.m_contactList = _arg1.m_node2.next;
};
b2Contact.Destroy(_arg1, m_world.m_blockAllocator);
m_world.m_contactCount--;
}
override public function PairAdded(_arg1, _arg2){
var _local3:b2Shape = (_arg1 as b2Shape);
var _local4:b2Shape = (_arg2 as b2Shape);
var _local5:b2Body = _local3.m_body;
var _local6:b2Body = _local4.m_body;
if (((_local5.IsStatic()) && (_local6.IsStatic()))){
return (m_nullContact);
};
if (_local3.m_body == _local4.m_body){
return (m_nullContact);
};
if (_local6.IsConnected(_local5)){
return (m_nullContact);
};
if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){
return (m_nullContact);
};
var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator);
if (_local7 == null){
return (m_nullContact);
};
_local3 = _local7.m_shape1;
_local4 = _local7.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
_local7.m_prev = null;
_local7.m_next = m_world.m_contactList;
if (m_world.m_contactList != null){
m_world.m_contactList.m_prev = _local7;
};
m_world.m_contactList = _local7;
_local7.m_node1.contact = _local7;
_local7.m_node1.other = _local6;
_local7.m_node1.prev = null;
_local7.m_node1.next = _local5.m_contactList;
if (_local5.m_contactList != null){
_local5.m_contactList.prev = _local7.m_node1;
};
_local5.m_contactList = _local7.m_node1;
_local7.m_node2.contact = _local7;
_local7.m_node2.other = _local5;
_local7.m_node2.prev = null;
_local7.m_node2.next = _local6.m_contactList;
if (_local6.m_contactList != null){
_local6.m_contactList.prev = _local7.m_node2;
};
_local6.m_contactList = _local7.m_node2;
m_world.m_contactCount++;
return (_local7);
}
public function Collide():void{
var _local2:b2Body;
var _local3:b2Body;
var _local1:b2Contact = m_world.m_contactList;
while (_local1) {
_local2 = _local1.m_shape1.m_body;
_local3 = _local1.m_shape2.m_body;
if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){
} else {
_local1.Update(m_world.m_contactListener);
};
_local1 = _local1.m_next;
};
}
}
}//package Box2D.Dynamics
Section 81
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw)
package Box2D.Dynamics {
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2DebugDraw {
public var m_xformScale:Number;// = 1
public var m_fillAlpha:Number;// = 1
public var m_alpha:Number;// = 1
public var m_lineThickness:Number;// = 1
public var m_drawFlags:uint;
public var m_drawScale:Number;// = 1
public var m_sprite:Sprite;
public static var e_coreShapeBit:uint = 4;
public static var e_shapeBit:uint = 1;
public static var e_centerOfMassBit:uint = 64;
public static var e_aabbBit:uint = 8;
public static var e_obbBit:uint = 16;
public static var e_pairBit:uint = 32;
public static var e_jointBit:uint = 2;
public function b2DebugDraw(){
m_drawFlags = 0;
}
public function DrawPolyline(_arg1:Array, _arg2:int, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
var _local4 = 1;
while (_local4 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
_local4++;
};
}
public function DrawConcaveArc(_arg1:Array, _arg2:int, _arg3:b2Vec2, _arg4:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
var _local5:Number = 16;
var _local6:Number = (_arg1[0].x - _arg3.x);
var _local7:Number = (_arg1[0].y - _arg3.y);
var _local8:Number = Math.atan2(_local7, _local6);
var _local9:Number = Math.atan2((_arg1[1].y - _arg3.y), (_arg1[1].x - _arg3.x));
var _local10:Number = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
while (_local9 > _local8) {
_local9 = (_local9 - (Math.PI * 2));
};
var _local11:Number = ((_local8 - _local9) / _local5);
var _local12:Number = _local8;
while (_local12 > _local9) {
m_sprite.graphics.lineTo(((_arg3.x + (_local10 * Math.cos(_local12))) * m_drawScale), ((_arg3.y + (_local10 * Math.sin(_local12))) * m_drawScale));
_local12 = (_local12 - _local11);
};
var _local13 = 1;
while (_local13 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local13].x * m_drawScale), (_arg1[_local13].y * m_drawScale));
_local13++;
};
m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
}
public function DrawSolidConcaveArc(_arg1:Array, _arg2:int, _arg3:b2Vec2, _arg4:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha);
var _local5:Number = 16;
var _local6:Number = (_arg1[0].x - _arg3.x);
var _local7:Number = (_arg1[0].y - _arg3.y);
var _local8:Number = Math.atan2(_local7, _local6);
var _local9:Number = Math.atan2((_arg1[1].y - _arg3.y), (_arg1[1].x - _arg3.x));
var _local10:Number = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
while (_local9 > _local8) {
_local9 = (_local9 - (Math.PI * 2));
};
var _local11:Number = ((_local8 - _local9) / _local5);
var _local12:Number = _local8;
while (_local12 > _local9) {
m_sprite.graphics.lineTo(((_arg3.x + (_local10 * Math.cos(_local12))) * m_drawScale), ((_arg3.y + (_local10 * Math.sin(_local12))) * m_drawScale));
_local12 = (_local12 - _local11);
};
var _local13 = 1;
while (_local13 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local13].x * m_drawScale), (_arg1[_local13].y * m_drawScale));
_local13++;
};
m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
m_sprite.graphics.endFill();
}
public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha);
var _local4 = 1;
while (_local4 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
_local4++;
};
m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
m_sprite.graphics.endFill();
}
public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale));
}
public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha);
m_sprite.graphics.moveTo(0, 0);
m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha);
m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale));
m_sprite.graphics.endFill();
m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale));
}
public function DrawXForm(_arg1:b2XForm):void{
m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha);
m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale));
m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha);
m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale));
}
public function ClearFlags(_arg1:uint):void{
m_drawFlags = (m_drawFlags & ~(_arg1));
}
public function SetFlags(_arg1:uint):void{
m_drawFlags = _arg1;
}
public function DrawCurve(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:b2Color):void{
var _local5:Number = 16;
var _local6:Number = (_arg1.x - _arg3.x);
var _local7:Number = (_arg1.y - _arg3.y);
var _local8:Number = Math.atan2(_local7, _local6);
var _local9:Number = Math.atan2((_arg2.y - _arg3.y), (_arg2.x - _arg3.x));
var _local10:Number = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
while (_local9 < _local8) {
_local9 = (_local9 + (Math.PI * 2));
};
var _local11:Number = ((_local9 - _local8) / _local5);
m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha);
m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
var _local12:Number = _local8;
while (_local12 <= _local9) {
m_sprite.graphics.lineTo(((_arg3.x + (_local10 * Math.cos(_local12))) * m_drawScale), ((_arg3.y + (_local10 * Math.sin(_local12))) * m_drawScale));
_local12 = (_local12 + _local11);
};
}
public function AppendFlags(_arg1:uint):void{
m_drawFlags = (m_drawFlags | _arg1);
}
public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale));
}
public function GetFlags():uint{
return (m_drawFlags);
}
public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
var _local4 = 1;
while (_local4 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
_local4++;
};
m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
}
}
}//package Box2D.Dynamics
Section 82
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener)
package Box2D.Dynamics {
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
public class b2DestructionListener {
public function SayGoodbyeShape(_arg1:b2Shape):void{
}
public function SayGoodbyeJoint(_arg1:b2Joint):void{
}
}
}//package Box2D.Dynamics
Section 83
//b2Island (Box2D.Dynamics.b2Island)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2Island {
public var m_listener:b2ContactListener;
public var m_positionIterationCount:int;
public var m_bodyCapacity:int;
public var m_bodies:Array;
public var m_joints:Array;
public var m_jointCapacity:int;
public var m_contactCount:int;
public var m_contacts:Array;
public var m_contactCapacity:int;
public var m_jointCount:int;
public var m_allocator;
public var m_bodyCount:int;
private static var s_reportCR:b2ContactResult = new b2ContactResult();
public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){
var _local6:int;
super();
m_bodyCapacity = _arg1;
m_contactCapacity = _arg2;
m_jointCapacity = _arg3;
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
m_allocator = _arg4;
m_listener = _arg5;
m_bodies = new Array(_arg1);
_local6 = 0;
while (_local6 < _arg1) {
m_bodies[_local6] = null;
_local6++;
};
m_contacts = new Array(_arg2);
_local6 = 0;
while (_local6 < _arg2) {
m_contacts[_local6] = null;
_local6++;
};
m_joints = new Array(_arg3);
_local6 = 0;
while (_local6 < _arg3) {
m_joints[_local6] = null;
_local6++;
};
m_positionIterationCount = 0;
}
public function AddBody(_arg1:b2Body):void{
var _local2 = m_bodyCount++;
m_bodies[_local2] = _arg1;
}
public function AddJoint(_arg1:b2Joint):void{
var _local2 = m_jointCount++;
m_joints[_local2] = _arg1;
}
public function Report(_arg1:Array):void{
var _local2:b2Mat22;
var _local3:b2Vec2;
var _local5:b2Contact;
var _local6:b2ContactConstraint;
var _local7:b2ContactResult;
var _local8:b2Body;
var _local9:int;
var _local10:Array;
var _local11:int;
var _local12:b2Manifold;
var _local13:int;
var _local14:b2ManifoldPoint;
var _local15:b2ContactConstraintPoint;
if (m_listener == null){
return;
};
var _local4:int;
while (_local4 < m_contactCount) {
_local5 = m_contacts[_local4];
_local6 = _arg1[_local4];
_local7 = s_reportCR;
_local7.shape1 = _local5.m_shape1;
_local7.shape2 = _local5.m_shape2;
_local8 = _local7.shape1.m_body;
_local9 = _local5.m_manifoldCount;
_local10 = _local5.GetManifolds();
_local11 = 0;
while (_local11 < _local9) {
_local12 = _local10[_local11];
_local7.normal.SetV(_local12.normal);
_local13 = 0;
while (_local13 < _local12.pointCount) {
_local14 = _local12.points[_local13];
_local15 = _local6.points[_local13];
_local7.position = _local8.GetWorldPoint(_local14.localPoint1);
_local7.normalImpulse = _local15.normalImpulse;
_local7.tangentImpulse = _local15.tangentImpulse;
_local7.id.key = _local14.id.key;
m_listener.Result(_local7);
_local13++;
};
_local11++;
};
_local4++;
};
}
public function AddContact(_arg1:b2Contact):void{
var _local2 = m_contactCount++;
m_contacts[_local2] = _arg1;
}
public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{
var _local5:int;
var _local6:b2Body;
var _local7:b2Joint;
var _local9:int;
var _local10:Boolean;
var _local11:Boolean;
var _local12:Boolean;
var _local13:Number;
var _local14:Number;
var _local15:Number;
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.IsStatic()){
} else {
_local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x))));
_local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y))));
_local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque));
_local6.m_force.SetZero();
_local6.m_torque = 0;
_local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1));
_local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1));
if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){
_local6.m_linearVelocity.Normalize();
_local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity);
_local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity);
};
if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){
if (_local6.m_angularVelocity < 0){
_local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity);
} else {
_local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity;
};
};
};
_local5++;
};
var _local8:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator);
_local8.InitVelocityConstraints(_arg1);
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local7.InitVelocityConstraints(_arg1);
_local5++;
};
_local5 = 0;
while (_local5 < _arg1.maxIterations) {
_local8.SolveVelocityConstraints();
_local9 = 0;
while (_local9 < m_jointCount) {
_local7 = m_joints[_local9];
_local7.SolveVelocityConstraints(_arg1);
_local9++;
};
_local5++;
};
_local8.FinalizeVelocityConstraints();
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.IsStatic()){
} else {
_local6.m_sweep.c0.SetV(_local6.m_sweep.c);
_local6.m_sweep.a0 = _local6.m_sweep.a;
_local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x));
_local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y));
_local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity));
_local6.SynchronizeTransform();
};
_local5++;
};
if (_arg3){
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local7.InitPositionConstraints();
_local5++;
};
m_positionIterationCount = 0;
while (m_positionIterationCount < _arg1.maxIterations) {
_local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte);
_local11 = true;
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local12 = _local7.SolvePositionConstraints();
_local11 = ((_local11) && (_local12));
_local5++;
};
if (((_local10) && (_local11))){
break;
};
m_positionIterationCount++;
};
};
Report(_local8.m_constraints);
if (_arg4){
_local13 = Number.MAX_VALUE;
_local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance);
_local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance);
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.m_invMass == 0){
} else {
if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){
_local6.m_sleepTime = 0;
_local13 = 0;
};
if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){
_local6.m_sleepTime = 0;
_local13 = 0;
} else {
_local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt);
_local13 = b2Math.b2Min(_local13, _local6.m_sleepTime);
};
};
_local5++;
};
if (_local13 >= b2Settings.b2_timeToSleep){
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag);
_local6.m_linearVelocity.SetZero();
_local6.m_angularVelocity = 0;
_local5++;
};
};
};
}
public function Clear():void{
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
}
public function SolveTOI(_arg1:b2TimeStep):void{
var _local2:int;
var _local5:b2Body;
var _local6:Boolean;
var _local3:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator);
_local2 = 0;
while (_local2 < _arg1.maxIterations) {
_local3.SolveVelocityConstraints();
_local2++;
};
_local2 = 0;
while (_local2 < m_bodyCount) {
_local5 = m_bodies[_local2];
if (_local5.IsStatic()){
} else {
_local5.m_sweep.c0.SetV(_local5.m_sweep.c);
_local5.m_sweep.a0 = _local5.m_sweep.a;
_local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x));
_local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y));
_local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity));
_local5.SynchronizeTransform();
};
_local2++;
};
var _local4:Number = 0.75;
_local2 = 0;
while (_local2 < _arg1.maxIterations) {
_local6 = _local3.SolvePositionConstraints(_local4);
if (_local6){
break;
};
_local2++;
};
Report(_local3.m_constraints);
}
}
}//package Box2D.Dynamics
Section 84
//b2TimeStep (Box2D.Dynamics.b2TimeStep)
package Box2D.Dynamics {
public class b2TimeStep {
public var warmStarting:Boolean;
public var positionCorrection:Boolean;
public var dt:Number;
public var maxIterations:int;
public var dtRatio:Number;
public var inv_dt:Number;
}
}//package Box2D.Dynamics
Section 85
//b2World (Box2D.Dynamics.b2World)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2World {
public var m_inv_dt0:Number;
public var m_boundaryListener:b2BoundaryListener;
public var m_contactList:b2Contact;
public var m_blockAllocator;
public var m_contactListener:b2ContactListener;
public var m_allowSleep:Boolean;
public var m_broadPhase:b2BroadPhase;
public var m_destructionListener:b2DestructionListener;
public var m_jointCount:int;
public var m_bodyCount:int;
public var m_lock:Boolean;
public var m_positionIterationCount:int;
public var m_groundBody:b2Body;
public var m_contactCount:int;
public var m_debugDraw:b2DebugDraw;
public var m_contactFilter:b2ContactFilter;
public var m_bodyList:b2Body;
public var m_stackAllocator;
public var m_jointList:b2Joint;
public var m_gravity:b2Vec2;
public var m_contactManager:b2ContactManager;
private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8);
public static var m_continuousPhysics:Boolean;
public static var m_warmStarting:Boolean;
private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6);
public static var m_positionCorrection:Boolean;
private static var s_xf:b2XForm = new b2XForm();
public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){
m_contactManager = new b2ContactManager();
super();
m_destructionListener = null;
m_boundaryListener = null;
m_contactFilter = b2ContactFilter.b2_defaultFilter;
m_contactListener = null;
m_debugDraw = null;
m_bodyList = null;
m_contactList = null;
m_jointList = null;
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
m_positionCorrection = true;
m_warmStarting = true;
m_continuousPhysics = true;
m_allowSleep = _arg3;
m_gravity = _arg2;
m_lock = false;
m_inv_dt0 = 0;
m_contactManager.m_world = this;
m_broadPhase = new b2BroadPhase(_arg1, m_contactManager);
var _local4:b2BodyDef = new b2BodyDef();
m_groundBody = CreateBody(_local4);
b2Distance.InitializeRegisters();
}
public function DrawJoint(_arg1:b2Joint):void{
var _local11:b2PulleyJoint;
var _local12:b2Vec2;
var _local13:b2Vec2;
var _local2:b2Body = _arg1.m_body1;
var _local3:b2Body = _arg1.m_body2;
var _local4:b2XForm = _local2.m_xf;
var _local5:b2XForm = _local3.m_xf;
var _local6:b2Vec2 = _local4.position;
var _local7:b2Vec2 = _local5.position;
var _local8:b2Vec2 = _arg1.GetAnchor1();
var _local9:b2Vec2 = _arg1.GetAnchor2();
var _local10:b2Color = s_jointColor;
switch (_arg1.m_type){
case b2Joint.e_distanceJoint:
m_debugDraw.DrawSegment(_local8, _local9, _local10);
break;
case b2Joint.e_pulleyJoint:
_local11 = (_arg1 as b2PulleyJoint);
_local12 = _local11.GetGroundAnchor1();
_local13 = _local11.GetGroundAnchor2();
m_debugDraw.DrawSegment(_local12, _local8, _local10);
m_debugDraw.DrawSegment(_local13, _local9, _local10);
m_debugDraw.DrawSegment(_local12, _local13, _local10);
break;
case b2Joint.e_mouseJoint:
m_debugDraw.DrawSegment(_local8, _local9, _local10);
break;
default:
if (_local2 != m_groundBody){
m_debugDraw.DrawSegment(_local6, _local8, _local10);
};
m_debugDraw.DrawSegment(_local8, _local9, _local10);
if (_local3 != m_groundBody){
m_debugDraw.DrawSegment(_local7, _local9, _local10);
};
};
}
public function Refilter(_arg1:b2Shape):void{
_arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf);
}
public function SetDebugDraw(_arg1:b2DebugDraw):void{
m_debugDraw = _arg1;
}
public function SetContactFilter(_arg1:b2ContactFilter):void{
m_contactFilter = _arg1;
}
public function GetProxyCount():int{
return (m_broadPhase.m_proxyCount);
}
public function DrawDebugData():void{
var _local2:int;
var _local3:b2Body;
var _local4:b2Shape;
var _local5:b2Joint;
var _local6:b2BroadPhase;
var _local11:b2XForm;
var _local15:Boolean;
var _local16:uint;
var _local17:b2Pair;
var _local18:b2Proxy;
var _local19:b2Proxy;
var _local20:b2Vec2;
var _local21:b2Vec2;
var _local22:b2Proxy;
var _local23:b2PolygonShape;
var _local24:b2OBB;
var _local25:b2Vec2;
var _local26:b2Mat22;
var _local27:b2Vec2;
var _local28:Number;
if (m_debugDraw == null){
return;
};
m_debugDraw.m_sprite.graphics.clear();
var _local1:uint = m_debugDraw.GetFlags();
var _local7:b2Vec2 = new b2Vec2();
var _local8:b2Vec2 = new b2Vec2();
var _local9:b2Vec2 = new b2Vec2();
var _local10:b2Color = new b2Color(0, 0, 0);
var _local12:b2AABB = new b2AABB();
var _local13:b2AABB = new b2AABB();
var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()];
if ((_local1 & b2DebugDraw.e_shapeBit)){
_local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit);
_local3 = m_bodyList;
while (_local3) {
_local11 = _local3.m_xf;
_local4 = _local3.GetShapeList();
while (_local4) {
if (_local3.IsStatic()){
DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15);
} else {
if (_local3.IsSleeping()){
DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15);
} else {
DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15);
};
};
_local4 = _local4.m_next;
};
_local3 = _local3.m_next;
};
};
if ((_local1 & b2DebugDraw.e_jointBit)){
_local5 = m_jointList;
while (_local5) {
DrawJoint(_local5);
_local5 = _local5.m_next;
};
};
if ((_local1 & b2DebugDraw.e_pairBit)){
_local6 = m_broadPhase;
_local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y));
_local10.Set(0.9, 0.9, 0.3);
_local2 = 0;
while (_local2 < b2Pair.b2_tableCapacity) {
_local16 = _local6.m_pairManager.m_hashTable[_local2];
while (_local16 != b2Pair.b2_nullPair) {
_local17 = _local6.m_pairManager.m_pairs[_local16];
_local18 = _local6.m_proxyPool[_local17.proxyId1];
_local19 = _local6.m_proxyPool[_local17.proxyId2];
_local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value));
_local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value));
_local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value));
_local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value));
_local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value));
_local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value));
_local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value));
_local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value));
_local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x));
_local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y));
_local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x));
_local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y));
m_debugDraw.DrawSegment(_local8, _local9, _local10);
_local16 = _local17.next;
};
_local2++;
};
};
if ((_local1 & b2DebugDraw.e_aabbBit)){
_local6 = m_broadPhase;
_local20 = _local6.m_worldAABB.lowerBound;
_local21 = _local6.m_worldAABB.upperBound;
_local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y));
_local10.Set(0.9, 0.3, 0.9);
_local2 = 0;
while (_local2 < b2Settings.b2_maxProxies) {
_local22 = _local6.m_proxyPool[_local2];
if (_local22.IsValid() == false){
} else {
_local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value));
_local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value));
_local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value));
_local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value));
_local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y);
_local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y);
_local14[2].Set(_local12.upperBound.x, _local12.upperBound.y);
_local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y);
m_debugDraw.DrawPolygon(_local14, 4, _local10);
};
_local2++;
};
_local14[0].Set(_local20.x, _local20.y);
_local14[1].Set(_local21.x, _local20.y);
_local14[2].Set(_local21.x, _local21.y);
_local14[3].Set(_local20.x, _local21.y);
m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9));
};
if ((_local1 & b2DebugDraw.e_obbBit)){
_local10.Set(0.5, 0.3, 0.5);
_local3 = m_bodyList;
while (_local3) {
_local11 = _local3.m_xf;
_local4 = _local3.GetShapeList();
while (_local4) {
if (_local4.m_type != b2Shape.e_polygonShape){
} else {
_local23 = (_local4 as b2PolygonShape);
_local24 = _local23.GetOBB();
_local25 = _local24.extents;
_local14[0].Set(-(_local25.x), -(_local25.y));
_local14[1].Set(_local25.x, -(_local25.y));
_local14[2].Set(_local25.x, _local25.y);
_local14[3].Set(-(_local25.x), _local25.y);
_local2 = 0;
while (_local2 < 4) {
_local26 = _local24.R;
_local27 = _local14[_local2];
_local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y)));
_local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y)));
_local14[_local2].x = _local28;
_local26 = _local11.R;
_local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y)));
_local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y)));
_local14[_local2].x = _local28;
_local2++;
};
m_debugDraw.DrawPolygon(_local14, 4, _local10);
};
_local4 = _local4.m_next;
};
_local3 = _local3.m_next;
};
};
if ((_local1 & b2DebugDraw.e_centerOfMassBit)){
_local3 = m_bodyList;
while (_local3) {
_local11 = s_xf;
_local11.R = _local3.m_xf.R;
_local11.position = _local3.GetWorldCenter();
m_debugDraw.DrawXForm(_local11);
_local3 = _local3.m_next;
};
};
}
public function DestroyBody(_arg1:b2Body):void{
var _local4:b2JointEdge;
var _local5:b2Shape;
if (m_lock == true){
return;
};
var _local2:b2JointEdge = _arg1.m_jointList;
while (_local2) {
_local4 = _local2;
_local2 = _local2.next;
if (m_destructionListener){
m_destructionListener.SayGoodbyeJoint(_local4.joint);
};
DestroyJoint(_local4.joint);
};
var _local3:b2Shape = _arg1.m_shapeList;
while (_local3) {
_local5 = _local3;
_local3 = _local3.m_next;
if (m_destructionListener){
m_destructionListener.SayGoodbyeShape(_local5);
};
_local5.DestroyProxy(m_broadPhase);
b2Shape.Destroy(_local5, m_blockAllocator);
};
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_bodyList){
m_bodyList = _arg1.m_next;
};
m_bodyCount--;
}
public function SetContinuousPhysics(_arg1:Boolean):void{
m_continuousPhysics = _arg1;
}
public function CreateGroundShape(_arg1:b2ShapeDef){
if (m_lock == true){
return (null);
};
switch (_arg1.type){
case b2Shape.e_staticEdgeShape:
return (new b2StaticEdgeChain(_arg1, this));
default:
return (m_groundBody.CreateShape(_arg1));
};
}
public function GetGroundBody():b2Body{
return (m_groundBody);
}
public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{
var _local6:b2CircleShape;
var _local7:b2Vec2;
var _local8:Number;
var _local9:b2Vec2;
var _local10:int;
var _local11:b2PolygonShape;
var _local12:int;
var _local13:Array;
var _local14:Array;
var _local15:Array;
var _local16:b2ConcaveArcShape;
var _local17:b2StaticEdgeShape;
var _local5:b2Color = s_coreColor;
switch (_arg1.m_type){
case b2Shape.e_circleShape:
_local6 = (_arg1 as b2CircleShape);
_local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition);
_local8 = _local6.m_radius;
_local9 = _arg2.R.col1;
m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3);
if (_arg4){
m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5);
};
break;
case b2Shape.e_polygonShape:
_local11 = (_arg1 as b2PolygonShape);
_local12 = _local11.GetVertexCount();
_local13 = _local11.GetVertices();
_local14 = new Array(b2Settings.b2_maxPolygonVertices);
_local10 = 0;
while (_local10 < _local12) {
_local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]);
_local10++;
};
m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3);
if (_arg4){
_local15 = _local11.GetCoreVertices();
_local10 = 0;
while (_local10 < _local12) {
_local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]);
_local10++;
};
m_debugDraw.DrawPolygon(_local14, _local12, _local5);
};
break;
case b2Shape.e_concaveArcShape:
_local16 = (_arg1 as b2ConcaveArcShape);
_local12 = _local16.GetVertexCount();
_local13 = _local16.GetVertices();
_local7 = b2Math.b2MulX(_arg2, _local16.m_arcCenter);
_local14 = new Array(b2Settings.b2_maxPolygonVertices);
_local10 = 0;
while (_local10 < _local12) {
_local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]);
_local10++;
};
m_debugDraw.DrawSolidConcaveArc(_local14, _local12, _local7, _arg3);
if (_arg4){
_local15 = _local16.GetCoreVertices();
_local10 = 0;
while (_local10 < _local12) {
_local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]);
_local10++;
};
m_debugDraw.DrawConcaveArc(_local14, _local12, _local7, _local5);
};
break;
case b2Shape.e_staticEdgeShape:
_local17 = (_arg1 as b2StaticEdgeShape);
m_debugDraw.DrawSegment(_local17.m_v1, _local17.m_v2, _arg3);
if (_arg4){
m_debugDraw.DrawSegment(_local17.m_coreV1, _local17.m_coreV2, _local5);
};
break;
};
}
public function GetContactCount():int{
return (m_contactCount);
}
public function Solve(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local9:int;
var _local10:int;
var _local11:b2Body;
var _local12:b2ContactEdge;
var _local13:b2JointEdge;
var _local14:Boolean;
m_positionIterationCount = 0;
var _local3:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener);
_local2 = m_bodyList;
while (_local2) {
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
_local2 = _local2.m_next;
};
var _local4:b2Contact = m_contactList;
while (_local4) {
_local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag));
_local4 = _local4.m_next;
};
var _local5:b2Joint = m_jointList;
while (_local5) {
_local5.m_islandFlag = false;
_local5 = _local5.m_next;
};
var _local6:int = m_bodyCount;
var _local7:Array = new Array(_local6);
var _local8:b2Body = m_bodyList;
while (_local8) {
if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){
} else {
if (_local8.IsStatic()){
} else {
_local3.Clear();
_local9 = 0;
var _temp1 = _local9;
_local9 = (_local9 + 1);
var _local15 = _temp1;
_local7[_local15] = _local8;
_local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag);
while (_local9 > 0) {
--_local9;
_local2 = _local7[_local9];
_local3.AddBody(_local2);
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag));
if (_local2.IsStatic()){
} else {
_local12 = _local2.m_contactList;
while (_local12) {
if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){
} else {
if (_local12.contact.m_manifoldCount == 0){
} else {
_local3.AddContact(_local12.contact);
_local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag);
_local11 = _local12.other;
if ((_local11.m_flags & b2Body.e_islandFlag)){
} else {
var _temp2 = _local9;
_local9 = (_local9 + 1);
var _local16 = _temp2;
_local7[_local16] = _local11;
_local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag);
};
};
};
_local12 = _local12.next;
};
_local13 = _local2.m_jointList;
while (_local13) {
if (_local13.joint.m_islandFlag == true){
} else {
_local3.AddJoint(_local13.joint);
_local13.joint.m_islandFlag = true;
_local11 = _local13.other;
if ((_local11.m_flags & b2Body.e_islandFlag)){
} else {
var _temp3 = _local9;
_local9 = (_local9 + 1);
_local16 = _temp3;
_local7[_local16] = _local11;
_local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag);
};
};
_local13 = _local13.next;
};
};
};
_local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep);
if (_local3.m_positionIterationCount > m_positionIterationCount){
m_positionIterationCount = _local3.m_positionIterationCount;
};
_local10 = 0;
while (_local10 < _local3.m_bodyCount) {
_local2 = _local3.m_bodies[_local10];
if (_local2.IsStatic()){
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
};
_local10++;
};
};
};
_local8 = _local8.m_next;
};
_local2 = m_bodyList;
while (_local2) {
if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
} else {
if (_local2.IsStatic()){
} else {
_local14 = _local2.SynchronizeShapes();
if ((((_local14 == false)) && (!((m_boundaryListener == null))))){
m_boundaryListener.Violation(_local2);
};
};
};
_local2 = _local2.m_next;
};
m_broadPhase.Commit();
}
public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{
var _local4:Array = new Array(_arg3);
var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3);
var _local6:int;
while (_local6 < _local5) {
_arg2[_local6] = _local4[_local6];
_local6++;
};
return (_local5);
}
public function SetGravity(_arg1:b2Vec2):void{
m_gravity = _arg1;
}
public function SolveTOI(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Shape;
var _local4:b2Shape;
var _local5:b2Body;
var _local6:b2Body;
var _local7:b2ContactEdge;
var _local11:b2Contact;
var _local12:b2Contact;
var _local13:Number;
var _local14:b2Body;
var _local15:int;
var _local16:b2TimeStep;
var _local17:int;
var _local18:Number;
var _local19:Number;
var _local20:b2Body;
var _local21:Boolean;
var _local8:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener);
var _local9:int = m_bodyCount;
var _local10:Array = new Array(_local9);
_local2 = m_bodyList;
while (_local2) {
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
_local2.m_sweep.t0 = 0;
_local2 = _local2.m_next;
};
_local11 = m_contactList;
while (_local11) {
_local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
_local11 = _local11.m_next;
};
while (true) {
_local12 = null;
_local13 = 1;
_local11 = m_contactList;
for (;_local11;(_local11 = _local11.m_next)) {
if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){
} else {
_local18 = 1;
if ((_local11.m_flags & b2Contact.e_toiFlag)){
_local18 = _local11.m_toi;
} else {
_local3 = _local11.m_shape1;
_local4 = _local11.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){
continue;
};
_local19 = _local5.m_sweep.t0;
if (_local5.m_sweep.t0 < _local6.m_sweep.t0){
_local19 = _local6.m_sweep.t0;
_local5.m_sweep.Advance(_local19);
} else {
if (_local6.m_sweep.t0 < _local5.m_sweep.t0){
_local19 = _local5.m_sweep.t0;
_local6.m_sweep.Advance(_local19);
};
};
_local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep);
if ((((_local18 > 0)) && ((_local18 < 1)))){
_local18 = (((1 - _local18) * _local19) + _local18);
if (_local18 > 1){
_local18 = 1;
};
};
_local11.m_toi = _local18;
_local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag);
};
if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){
_local12 = _local11;
_local13 = _local18;
};
};
};
if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){
break;
};
_local3 = _local12.m_shape1;
_local4 = _local12.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
_local5.Advance(_local13);
_local6.Advance(_local13);
_local12.Update(m_contactListener);
_local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag));
if (_local12.m_manifoldCount == 0){
} else {
_local14 = _local5;
if (_local14.IsStatic()){
_local14 = _local6;
};
_local8.Clear();
_local15 = 0;
var _temp1 = _local15;
_local15 = (_local15 + 1);
var _local22 = _temp1;
_local10[_local22] = _local14;
_local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag);
while (_local15 > 0) {
--_local15;
_local2 = _local10[_local15];
_local8.AddBody(_local2);
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag));
if (_local2.IsStatic()){
} else {
_local7 = _local2.m_contactList;
while (_local7) {
if (_local8.m_contactCount == _local8.m_contactCapacity){
} else {
if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){
} else {
if (_local7.contact.m_manifoldCount == 0){
} else {
_local8.AddContact(_local7.contact);
_local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag);
_local20 = _local7.other;
if ((_local20.m_flags & b2Body.e_islandFlag)){
} else {
if (_local20.IsStatic() == false){
_local20.Advance(_local13);
_local20.WakeUp();
};
var _temp2 = _local15;
_local15 = (_local15 + 1);
var _local23 = _temp2;
_local10[_local23] = _local20;
_local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag);
};
};
};
};
_local7 = _local7.next;
};
};
};
_local16 = new b2TimeStep();
_local16.dt = ((1 - _local13) * _arg1.dt);
_local16.inv_dt = (1 / _local16.dt);
_local16.maxIterations = _arg1.maxIterations;
_local8.SolveTOI(_local16);
_local17 = 0;
while (_local17 < _local8.m_bodyCount) {
_local2 = _local8.m_bodies[_local17];
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
} else {
if (_local2.IsStatic()){
} else {
_local21 = _local2.SynchronizeShapes();
if ((((_local21 == false)) && (!((m_boundaryListener == null))))){
m_boundaryListener.Violation(_local2);
};
_local7 = _local2.m_contactList;
while (_local7) {
_local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag));
_local7 = _local7.next;
};
};
};
_local17++;
};
_local17 = 0;
while (_local17 < _local8.m_contactCount) {
_local11 = _local8.m_contacts[_local17];
_local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
_local17++;
};
m_broadPhase.Commit();
};
};
}
public function GetJointList():b2Joint{
return (m_jointList);
}
public function Validate():void{
m_broadPhase.Validate();
}
public function GetPairCount():int{
return (m_broadPhase.m_pairManager.m_pairCount);
}
public function GetBodyList():b2Body{
return (m_bodyList);
}
public function SetWarmStarting(_arg1:Boolean):void{
m_warmStarting = _arg1;
}
public function SetPositionCorrection(_arg1:Boolean):void{
m_positionCorrection = _arg1;
}
public function CreateJoint(_arg1:b2JointDef):b2Joint{
var _local3:b2Body;
var _local4:b2Shape;
var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator);
_local2.m_prev = null;
_local2.m_next = m_jointList;
if (m_jointList){
m_jointList.m_prev = _local2;
};
m_jointList = _local2;
m_jointCount++;
_local2.m_node1.joint = _local2;
_local2.m_node1.other = _local2.m_body2;
_local2.m_node1.prev = null;
_local2.m_node1.next = _local2.m_body1.m_jointList;
if (_local2.m_body1.m_jointList){
_local2.m_body1.m_jointList.prev = _local2.m_node1;
};
_local2.m_body1.m_jointList = _local2.m_node1;
_local2.m_node2.joint = _local2;
_local2.m_node2.other = _local2.m_body1;
_local2.m_node2.prev = null;
_local2.m_node2.next = _local2.m_body2.m_jointList;
if (_local2.m_body2.m_jointList){
_local2.m_body2.m_jointList.prev = _local2.m_node2;
};
_local2.m_body2.m_jointList = _local2.m_node2;
if (_arg1.collideConnected == false){
_local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2;
_local4 = _local3.m_shapeList;
while (_local4) {
_local4.RefilterProxy(m_broadPhase, _local3.m_xf);
_local4 = _local4.m_next;
};
};
return (_local2);
}
public function DestroyJoint(_arg1:b2Joint):void{
var _local5:b2Body;
var _local6:b2Shape;
var _local2:Boolean = _arg1.m_collideConnected;
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_jointList){
m_jointList = _arg1.m_next;
};
var _local3:b2Body = _arg1.m_body1;
var _local4:b2Body = _arg1.m_body2;
_local3.WakeUp();
_local4.WakeUp();
if (_arg1.m_node1.prev){
_arg1.m_node1.prev.next = _arg1.m_node1.next;
};
if (_arg1.m_node1.next){
_arg1.m_node1.next.prev = _arg1.m_node1.prev;
};
if (_arg1.m_node1 == _local3.m_jointList){
_local3.m_jointList = _arg1.m_node1.next;
};
_arg1.m_node1.prev = null;
_arg1.m_node1.next = null;
if (_arg1.m_node2.prev){
_arg1.m_node2.prev.next = _arg1.m_node2.next;
};
if (_arg1.m_node2.next){
_arg1.m_node2.next.prev = _arg1.m_node2.prev;
};
if (_arg1.m_node2 == _local4.m_jointList){
_local4.m_jointList = _arg1.m_node2.next;
};
_arg1.m_node2.prev = null;
_arg1.m_node2.next = null;
b2Joint.Destroy(_arg1, m_blockAllocator);
m_jointCount--;
if (_local2 == false){
_local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4;
_local6 = _local5.m_shapeList;
while (_local6) {
_local6.RefilterProxy(m_broadPhase, _local5.m_xf);
_local6 = _local6.m_next;
};
};
}
public function SetContactListener(_arg1:b2ContactListener):void{
m_contactListener = _arg1;
}
public function CreateBody(_arg1:b2BodyDef):b2Body{
if (m_lock == true){
return (null);
};
var _local2:b2Body = new b2Body(_arg1, this);
_local2.m_prev = null;
_local2.m_next = m_bodyList;
if (m_bodyList){
m_bodyList.m_prev = _local2;
};
m_bodyList = _local2;
m_bodyCount++;
return (_local2);
}
public function SetBoundaryListener(_arg1:b2BoundaryListener):void{
m_boundaryListener = _arg1;
}
public function SetDestructionListener(_arg1:b2DestructionListener):void{
m_destructionListener = _arg1;
}
public function Step(_arg1:Number, _arg2:int):void{
m_lock = true;
var _local3:b2TimeStep = new b2TimeStep();
_local3.dt = _arg1;
_local3.maxIterations = _arg2;
if (_arg1 > 0){
_local3.inv_dt = (1 / _arg1);
} else {
_local3.inv_dt = 0;
};
_local3.dtRatio = (m_inv_dt0 * _arg1);
_local3.positionCorrection = m_positionCorrection;
_local3.warmStarting = m_warmStarting;
m_contactManager.Collide();
if (_local3.dt > 0){
Solve(_local3);
};
if (((m_continuousPhysics) && ((_local3.dt > 0)))){
SolveTOI(_local3);
};
DrawDebugData();
m_inv_dt0 = _local3.inv_dt;
m_lock = false;
}
public function GetBodyCount():int{
return (m_bodyCount);
}
public function GetJointCount():int{
return (m_jointCount);
}
}
}//package Box2D.Dynamics
Section 86
//KongregateEvent (com.kongregate.as3.client.events.KongregateEvent)
package com.kongregate.as3.client.events {
import flash.events.*;
public class KongregateEvent extends Event {
public static const COMPLETE:String = "component_api_available";
public function KongregateEvent(_arg1:String){
super(_arg1);
}
}
}//package com.kongregate.as3.client.events
Section 87
//AbstractShadowService (com.kongregate.as3.client.services.AbstractShadowService)
package com.kongregate.as3.client.services {
import flash.events.*;
public class AbstractShadowService extends EventDispatcher {
protected function alert(_arg1:String, _arg2:String, _arg3="", _arg4:String=""):void{
trace(((((((("Kongregate API: " + _arg1) + ".") + _arg2) + "(") + _arg3) + ") ") + _arg4));
}
}
}//package com.kongregate.as3.client.services
Section 88
//HighScoreServiceShadow (com.kongregate.as3.client.services.HighScoreServiceShadow)
package com.kongregate.as3.client.services {
public class HighScoreServiceShadow extends AbstractShadowService implements IHighScoreServices {
private var mode:String;
public function HighScoreServiceShadow(){
mode = "";
}
public function submit(_arg1:Number, _arg2:String=null):void{
alert("IHighScoreServices", "submit", arguments);
}
public function connect():Boolean{
alert("IKongregateServices", "connect");
return (true);
}
public function requestList(_arg1:Function):void{
alert("IHighScoreServices", "requestList", "", (("[Mode: " + mode) + "]"));
_arg1({success:false});
}
public function setMode(_arg1:String):void{
alert("IHighScoreServices", "setMode", arguments);
this.mode = _arg1;
}
}
}//package com.kongregate.as3.client.services
Section 89
//IHighScoreServices (com.kongregate.as3.client.services.IHighScoreServices)
package com.kongregate.as3.client.services {
public interface IHighScoreServices {
function setMode(_arg1:String):void;
function submit(_arg1:Number, _arg2:String=null):void;
function requestList(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 90
//IKongregateServices (com.kongregate.as3.client.services.IKongregateServices)
package com.kongregate.as3.client.services {
import flash.events.*;
public interface IKongregateServices extends IEventDispatcher {
function getPlayerInfo(_arg1:Function):void;
function connect(_arg1:Number=-1):Boolean;
}
}//package com.kongregate.as3.client.services
Section 91
//IStatServices (com.kongregate.as3.client.services.IStatServices)
package com.kongregate.as3.client.services {
public interface IStatServices {
function submitArray(_arg1:Array):void;
function submit(_arg1:String, _arg2:Number):void;
}
}//package com.kongregate.as3.client.services
Section 92
//IUserServices (com.kongregate.as3.client.services.IUserServices)
package com.kongregate.as3.client.services {
public interface IUserServices {
function getName():String;
function getPlayerInfo(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 93
//KongregateServiceShadow (com.kongregate.as3.client.services.KongregateServiceShadow)
package com.kongregate.as3.client.services {
public class KongregateServiceShadow extends AbstractShadowService implements IKongregateServices {
public function getName():String{
alert("IKongregateServices", "getName");
return ("Guest");
}
public function connect(_arg1:Number=-1):Boolean{
alert("IKongregateServices", "connect", arguments);
return (true);
}
public function getPlayerInfo(_arg1:Function):void{
alert("IKongregateServices", "getPlayerInfo");
_arg1(new Object());
}
}
}//package com.kongregate.as3.client.services
Section 94
//StatServiceShadow (com.kongregate.as3.client.services.StatServiceShadow)
package com.kongregate.as3.client.services {
public class StatServiceShadow extends AbstractShadowService implements IStatServices {
public function submitArray(_arg1:Array):void{
alert("IStatServices", "submitArray", arguments);
}
public function submit(_arg1:String, _arg2:Number):void{
alert("IStatServices", "submitStat", arguments);
}
}
}//package com.kongregate.as3.client.services
Section 95
//UserServiceShadow (com.kongregate.as3.client.services.UserServiceShadow)
package com.kongregate.as3.client.services {
public class UserServiceShadow extends AbstractShadowService implements IUserServices {
public function getName():String{
alert("UserService", "getName");
return ("Guest");
}
public function getPlayerInfo(_arg1:Function):void{
alert("UserService", "getPlayerInfo");
_arg1({isGuest:true, name:"Guest", points:0, level:0, isMode:false, isAdmin:false, isDeveloper:false, avatarPath:"", chatAvatarPath:""});
}
}
}//package com.kongregate.as3.client.services
Section 96
//IAPIBootstrap (com.kongregate.as3.client.IAPIBootstrap)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
public interface IAPIBootstrap {
function init(_arg1:Event=null, _arg2:Stage=null):void;
function hideLog():void;
function showLog(_arg1:int=0):void;
}
}//package com.kongregate.as3.client
Section 97
//KongregateAPI (com.kongregate.as3.client.KongregateAPI)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import com.kongregate.as3.client.services.*;
import com.kongregate.as3.client.events.*;
import flash.system.*;
import flash.net.*;
import flash.errors.*;
public class KongregateAPI extends Sprite {
private const VERSION:Number = 1;
private var loader:Loader;
private var loadedDomain:ApplicationDomain;
private static const CLASS_USER:String = "com.kongregate.as3.client.services.UserServices";
private static const CLASS_STATS:String = "com.kongregate.as3.client.services.StatServices";
private static const CLASS_SERVICES:String = "com.kongregate.as3.client.services.KongregateServices";
private static const CLASS_SCORES:String = "com.kongregate.as3.client.services.HighScoreServices";
private static const DEBUG_API_URL:String = "//Linuxpc/kongregate/public/flash/API_AS3.swf";
private static var _connected:Boolean;
private static var kUser:IUserServices;
private static var _loaded:Boolean;
private static var kServices:IKongregateServices;
private static var kScores:IHighScoreServices;
private static var mInstance:KongregateAPI;
private static var kStats:IStatServices;
private static var kAPI:IAPIBootstrap;
public function KongregateAPI(){
if (mInstance != null){
throw (new Error("Warning: KongregateAPI has been added to stage more than once or accessed improperly. Use getInstance() or a stage reference to access."));
};
mInstance = this;
this.addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
}
public function get loaded():Boolean{
return (_loaded);
}
public function get connected():Boolean{
return (_connected);
}
private function alertConnected(_arg1:TimerEvent=null):void{
var _local2:KongregateEvent;
var _local3:Boolean;
_local2 = new KongregateEvent(KongregateEvent.COMPLETE);
_local3 = this.dispatchEvent(_local2);
}
private function init(_arg1:Event):void{
var _local2:Object;
var _local3:String;
var _local4:URLRequest;
var _local5:LoaderContext;
this.removeEventListener(Event.ADDED_TO_STAGE, init);
_loaded = false;
_connected = false;
_local2 = LoaderInfo(root.loaderInfo).parameters;
_local3 = _local2.api_path;
if (_local3 == null){
trace("Alert: Kongregate API could not be loaded, due to local testing. API will load when the game is uploaded.");
createShadowServices();
return;
};
Security.allowDomain("*.kongregate.com");
Security.allowDomain("kongregatetrunk.com");
_local4 = new URLRequest(_local3);
_local5 = new LoaderContext(false);
_local5.applicationDomain = ApplicationDomain.currentDomain;
_local5.securityDomain = SecurityDomain.currentDomain;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.load(_local4, _local5);
}
public function get api():IAPIBootstrap{
return (kAPI);
}
private function loadComplete(_arg1:Event):void{
getServices();
}
public function get scores():IHighScoreServices{
return (kScores);
}
private function ioErrorHandler(_arg1:IOErrorEvent):void{
throw (new IOError(("API file not found. " + _arg1)));
}
public function get services():IKongregateServices{
return (kServices);
}
public function get stats():IStatServices{
return (kStats);
}
private function createShadowServices():void{
var _local1:Timer;
trace(">>> Kongregate Shadow Services instantiated for local development..");
kServices = new KongregateServiceShadow();
kScores = new HighScoreServiceShadow();
kStats = new StatServiceShadow();
kUser = new UserServiceShadow();
_local1 = new Timer(200, 1);
_local1.addEventListener(TimerEvent.TIMER_COMPLETE, alertConnected);
_local1.start();
_connected = true;
}
public function get user():IUserServices{
return (kUser);
}
private function getServices():void{
var _local1:ApplicationDomain;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local1 = ApplicationDomain.currentDomain;
kAPI = IAPIBootstrap(loader.getChildAt(0));
this.addChild(loader);
_local2 = _local1.getDefinition(CLASS_SERVICES);
trace(_local2);
kServices = _local2.getInstance();
_local3 = _local1.getDefinition(CLASS_SCORES);
kScores = _local3.getInstance();
_local4 = _local1.getDefinition(CLASS_STATS);
kStats = _local4.getInstance();
_local5 = _local1.getDefinition(CLASS_USER);
kUser = _local5.getInstance();
kServices.connect(VERSION);
_loaded = true;
_connected = true;
alertConnected();
}
public static function getInstance():KongregateAPI{
if (!mInstance){
throw (new IllegalOperationError("You must add the Kongregate API component to the stage before attempting to access it."));
};
return (mInstance);
}
}
}//package com.kongregate.as3.client
Section 98
//Audio (game.Audio)
package game {
import flash.events.*;
import flash.utils.*;
import flash.media.*;
import flash.net.*;
import flash.text.*;
public class Audio {
var cVar:int;// = 1
var timer:Timer;
var AudioData:Array;
var loadIndex:int;// = 0
var vt:SoundTransform;
var musicDampen:Number;// = 0.175
var channels:Object;
var audio:Object;
var embed:Array;
var currentMS:String;// = ""
var main:Object;
public function Audio(_arg1=null){
embed = ["accept", "clown", "curb", "deliv", "hit", "inter", "level", "gas", "item", "marker", "money", "nitro", "ped", "outGas", "siren", "CS", "HP", "LT", "MT", "PZ", "TT", "UT", "YP"];
audio = {};
channels = {FX:"", MS:"", EX:"", SR:""};
vt = new SoundTransform();
AudioData = [["accept", 1, 100, 100], ["clown", 3, 100, 75], ["curb", 3, 100, 100], ["deliv", 3, 100, 100], ["gas", 1, 100, 100], ["hit", 5, 100, 100], ["inter", 3, 100, 100], ["item", 2, 100, 100], ["level", 1, 100, 100], ["marker", 1, 100, 100], ["money", 3, 100, 100], ["nitro", 2, 100, 100], ["ped", 4, 100, 75], ["outGas", 1, 100, 100], ["siren", 2, 100, 10], ["CS", 1, 100, 100], ["HP", 1, 100, 100], ["LT", 1, 100, 100], ["MT", 1, 100, 100], ["PZ", 1, 100, 100], ["TT", 1, 100, 100], ["UT", 1, 100, 100], ["YP", 1, 100, 100]];
super();
this.main = _arg1;
loadNextSound();
}
public function playFX(_arg1, _arg2){
if (main.muted == 2){
return;
};
if (audio[_arg1] != undefined){
if (rand(0, 100) < audio[_arg1].chance){
if (channels.FX != ""){
channels.FX.stop();
};
vt.volume = ((audio[_arg1].vol * getSFXV()) * _arg2);
channels.FX = audio[_arg1][("snd" + rand(1, audio[_arg1].vars))].play(50, 1, vt);
};
};
}
public function vol(_arg1){
var c:SoundChannel;
var vo:SoundTransform;
var v = _arg1;
try {
c = channels.MS;
vo = c.soundTransform;
vo.volume = (v * ((main.muted == 0)) ? 1 : 0);
c.soundTransform = vo;
} catch(e) {
};
}
public function playMS(_arg1){
if (_arg1 == currentMS){
return;
};
currentMS = _arg1;
if (channels.MS != ""){
channels.MS.stop();
};
vt.volume = (((musicDampen * getMSV()) * ((main.muted == 0)) ? 1 : 0) * ((_arg1 == "TT")) ? 1.5 : 1);
channels.MS = audio[_arg1][("snd" + rand(1, audio[_arg1].vars))].play(50, 1000, vt);
}
function loadNextSound(){
var _local1:String = AudioData[loadIndex][0];
if (cVar == 1){
audio[_local1] = {};
audio[_local1].vars = AudioData[loadIndex][1];
audio[_local1].chance = AudioData[loadIndex][2];
audio[_local1].vol = (AudioData[loadIndex][3] / 100);
};
if (embed.indexOf(_local1) != -1){
audio[_local1][("snd" + cVar)] = Factory((_local1 + cVar));
soundLoaded(1);
} else {
audio[_local1][("snd" + cVar)] = new Sound(new URLRequest(((((main.baseDir + "audio/") + _local1) + cVar) + ".mp3")));
audio[_local1][("snd" + cVar)].addEventListener(Event.COMPLETE, soundLoaded, false, 0, true);
};
}
function getMSV(){
return ([0, 0.5, 1, 1.75][main.musicVolume]);
}
public function stopSiren(){
try {
channels.SR.stop();
} catch(e) {
};
}
function freewayADJ(_arg1, _arg2){
var _local3:Number = (((280 - _arg2) / 10) * (musicDampen * getMSV()));
if (_local3 < 0){
_local3 = 0;
};
vol(_local3);
}
function rand(_arg1:int, _arg2:int):int{
return ((Math.round((Math.random() * (_arg2 - _arg1))) + _arg1));
}
public function playEX(_arg1){
if (main.muted == 2){
return;
};
if (audio[_arg1] != undefined){
if (rand(0, 100) < audio[_arg1].chance){
if (channels.EX != ""){
channels.EX.stop();
};
vt.volume = (audio[_arg1].vol * getSFXV());
channels.EX = audio[_arg1][("snd" + rand(1, audio[_arg1].vars))].play(50, 1, vt);
};
};
}
function Factory(_arg1){
switch (_arg1){
case "accept1":
return (new accept1());
case "clown1":
return (new clown1());
case "clown2":
return (new clown2());
case "clown3":
return (new clown3());
case "curb1":
return (new curb1());
case "curb2":
return (new curb2());
case "curb3":
return (new curb3());
case "deliv1":
return (new deliv1());
case "deliv2":
return (new deliv2());
case "deliv3":
return (new deliv3());
case "hit1":
return (new hit1());
case "hit2":
return (new hit2());
case "hit3":
return (new hit3());
case "hit4":
return (new hit4());
case "hit5":
return (new hit5());
case "inter1":
return (new inter1());
case "inter2":
return (new inter2());
case "inter3":
return (new inter3());
case "level1":
return (new level1());
case "gas1":
return (new gas1());
case "item1":
return (new item1());
case "item2":
return (new item2());
case "marker1":
return (new marker1());
case "money1":
return (new money1());
case "money2":
return (new money2());
case "money3":
return (new money3());
case "nitro1":
return (new nitro1());
case "nitro2":
return (new nitro2());
case "ped1":
return (new ped1());
case "ped2":
return (new ped2());
case "ped3":
return (new ped3());
case "ped4":
return (new ped4());
case "outGas1":
return (new outGas1());
case "siren1":
return (new siren1());
case "siren2":
return (new siren2());
case "CS1":
return (new CS());
case "HP1":
return (new HP());
case "LT1":
return (new LT());
case "MT1":
return (new MT());
case "PZ1":
return (new PZ());
case "TT1":
return (new TT());
case "UT1":
return (new UT());
case "YP1":
return (new YP());
};
}
function getSFXV(){
return ([0, 0.5, 1, 1.5][main.sfxVolume]);
}
public function playSiren(){
trace("play");
if (main.muted == 2){
return;
};
if (channels.SR != ""){
channels.SR.stop();
};
vt.volume = (audio.siren.vol * getSFXV());
channels.SR = audio.siren[("snd" + rand(1, audio.siren.vars))].play(50, 1, vt);
}
function soundLoaded(_arg1){
cVar++;
if (AudioData[loadIndex] != undefined){
if (cVar > AudioData[loadIndex][1]){
cVar = 1;
loadIndex++;
};
};
if (loadIndex >= AudioData.length){
} else {
loadNextSound();
};
}
function parkADJ(_arg1, _arg2){
var _local3:Number = (musicDampen * getMSV());
var _local4:Number = Math.sqrt((((_arg1 * _arg1) + (_arg2 * _arg2)) + _arg1));
var _local5:Number = (((_local4 - 100) / 60) * _local3);
if (_local5 < 0){
_local5 = 0;
};
if (_local5 > _local3){
_local5 = _local3;
};
vol(_local5);
}
public function musicVol(_arg1){
var _local2:SoundChannel = channels.MS;
var _local3:SoundTransform = _local2.soundTransform;
_local3.volume = ((((musicDampen * _arg1) * getMSV()) * ((main.muted == 0)) ? 1 : 0) * ((currentMS == "TT")) ? 1.5 : 1);
_local2.soundTransform = _local3;
}
}
}//package game
Section 99
//Bit (game.Bit)
package game {
import flash.display.*;
class Bit extends GraphicalObject {
var destroy:Boolean;// = false
var yMov:Number;
var timer:int;// = 750
var drag:Number;
var xMov:Number;
function Bit(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number):void{
super("BIT", _arg1);
this.drag = _arg2;
xMov = ((Math.random() * 10) - 5);
yMov = ((Math.random() * 10) - 5);
_arg1.x = _arg3;
_arg1.y = _arg4;
}
public function behave(){
timer--;
if (timer < 0){
destroy = true;
};
xMov = (xMov * drag);
yMov = (yMov * drag);
graphic.x = (graphic.x + xMov);
graphic.y = (graphic.y + yMov);
}
}
}//package game
Section 100
//Chars (game.Chars)
package game {
public class Chars {
public var chars:Object;
public function Chars(){
init();
}
public function init(){
chars = {Sal:{tasks:[], nam:"Sal Salsman", nick:"Sal", building:"Sal's Used Cars", hood:"Midtown", tip:10, chat2:"Oh wow, is that one of Flip's brownies? Mmmmmmm.... delicious! . . . . . . WOW! For some reason I now feel compelled to do something generous, perhaps for the first time in my life... Check out the new beauty for sale!", poor:"How the heck did you ruin a pizza made right across the street?", med:"Not bad... but it ain't gonna get you any deals around here.", good:"Delicious! Hope it wasn't any trouble crossing the street. Heheh....", chat:"Welcome to Sal's! Our motto is 'We're the only choice you've got', so start choosing! Use the arrow keys or mouse to select a car and RETURN or CLICK to buy it. Press SPACEBAR or ESC to leave.", Colt:"Ah, the COLT... this little beauty is a real workhorse, hence the horse-like name. And only $750! Interested?", NoColt:"Sorry kid, you just dont have enough money for this one.", Wagon:"The WAGON is tried and true, and has no stigma whatsoever of 70's era soccer moms. $400 puts you in the driver's seat.", NoWagon:"Oops! Maybe come back when you have a bit more dough....", Bug:"This particular BUG does not transform into a friendly robot. Sorry...", NoBug:"Not enough money for this one, kid...", Jeep:"The JEEP very well might get you killed, but the dames love it! $1000 even for this one.", NoJeep:"Maybe the jeep is a bit too expensive for you.", Spunk:"The SPUNK is partially electric, so it really saves on gas. Although, it costs $2000.", NoSpunk:"Oops! Maybe come back when you have a bit more dough....", Bummer:"The BUMMER is a favorite amongst those who like to smash stuff and pay through the nose on gas. All this for $3000!", NoBummer:"It's pretty expensive... perhaps next time.", Roadie:"This particular ROADIE is from my personal collection. Treat her with care! $5000 by the way...", NoRoadie:"Maybe next time when you save up the cash...", Free:"You already bought this car, so feel free to take it whenever you want!"}, Tony:{tasks:[], nam:"Tony", nick:"Uncle Tony", building:"Uncle Tony's Pizza", hood:"Midtown", tip:50, poor:"x", med:"xx", good:"xxx", chat:"I ain't payin ya to explore da neighborhood kid... get back to work!", Sal:"Why is that lazy bum ordering a pizza? He works across da street!", Biff:"Whoa, that Biff guy... I hope he don't bust a vein if ya know what I mean...", Fred:"Ah, Fred! One of our best customers! Too bad he's always on da sauce...", Giblet:"Giblet needs to lay off the pizzas if you ask me.", End:"He's a strange one alright... but he does order alotta pizzas!", Billy:"Billy must get lonely in that Dino hut.", Oliver:"What a weird kid!", Wendy:"Ah, Wendy is a sweetheart. I think yer gonna like her...", Joey:"What's with these kids with the bones in the noses!", Phil:"Ah Phil, a loyal customer for the past 90 years.", Agnes:"I don't wanna know what they're doin down at that place. Yeesh!", Hector:"Ah, my favorite mexican restaurant!", Sally:"What's that little girl doing down at Monstercorp?", Leroy:"Leroy is a weird kid. He never seems to leave that tire swing.", Annie:"How's a 5 year old girl gonna pay for these pizzas?", Lance:"Watch out for this guy. Something seems a little funny about him...", Henry:"Henry's been our family doctor for years.", Fidanka:"Never been to this place but it sounds kinda strange...", Ed:"My good friend Ed... He's put out about 50 fires at this place alone!", Peterson:"What's Peterson doing at that sleazy place???", Deon:"I've never seen this guy move a muscle.", Edna:"What's my sweet ma doin' at that club! Must be a mistake...", Jack:"That guy is gonna work himself to death one of these days.", Ralph:"I don't wanna know what that bum is doin' all the way out there...", Willie:"Im not so sure about Willie's lifestyle choices.", Blix:"His last album was crap, I tell ya!", Skip:"Skip's never going to learn, is he?", Eddie:"I've never understood this Eddie character...", Susan:"Yeeesh! That lady gives me the creeps...", Marvin:"Ah, poor ol' Marvin. Such a lonely guy.", Vito:"Ah, my good friend Vito! Give him my regards.", Hitop:"This guy has the nicest place in the whole city! Lucky stiff...", Candi:"That girl is going to cheer her way right into my big Italian heart.", Mo:"Whats with these kids and the holes in the face?", Flip:"Not to rat him out or anything, but I think this guy is up to something...", Todd:"Say hi to Todd for me. We go way back.", Ray:"This guy practically lives at that taco place. Not sure why he's ordering pizzas...", Raimy:"Now this guy is WEIRD... watch out for him.", Earl:"Don't let his rough exterior fool you...", Charlie:"This guy has been alive since the civil war I think...", Dale:"I thought Dale was dead! Oh well, a dead guy's gotta eat too I guess.", Win:"Amazing work, kid. I've never seen anyone deliver 500 pizzas in one day. Maybe you should consider retirement!"}, Eddie:{tasks:[], nam:"Eddie Cruzer", nick:"Eddie", building:"Cashola Mall", hood:"Midtown", tip:40, poor:"Oh geez, man... this is just really bad.", med:"I feel like I can really be myself in mall parking lots.", good:"Great pizza! Thanks for driving all the way over here...", chat:"I've seen people hide things behind the buddhas to the north."}, Biff:{tasks:[], nam:"Biff Dickman", nick:"Biff", building:"Rager's Gym", hood:"Midtown", tip:20, poor:"GGGEEEEEAAAAHHHH! This Pizza is revolting!", med:"HHHHRRRRGGHHHAAAAA! Will you just look at these quads?!?! Magnificent...", good:"WWRRRAAAGGHHH! What a taste explosion!", chat:"HHHHRRRRGGHHHMMMMHHH!"}, Willie:{tasks:[1], nam:"Willie LePimp", nick:"Willie", hood:"Midtown", tip:30, poor:"You must be lookin' for a particular style of slap...", med:"It's hard work bein' a pimp. Just ask the Mayor!", good:"Hehe.. Yeah, nice work kid. Let me know if you ever want a job...", choice1:false, has1:"$90", wants1:"Feather", clue1:"Damn, Some fool stole my most pimpin' item right off of my hat. I don't feel like I'm fully pimpin' without it.", give1:"Right on, kid! Here's a little somethin from Big Willie.", chat:"It's hard work bein' a pimp. Just ask the Mayor!"}, Fred:{tasks:[], nam:"Fred", nick:"Fred", building:"Flappy's Bar", hood:"Midtown", tip:10, poor:"It's a good think I'm so damn drunk, otherwise I'd start to question if this is pizza at all.", med:"Good or Bad, I'm gonna vomit this all over the place!", good:"You've given me a new lease on life! For about 30 minutes...", chat:"...Burp..."}, Billy:{tasks:[], nam:"Billy Simpson", nick:"Billy", building:"Dino Gas", hood:"Midtown", tip:10, poor:"This is about as gross as our bathroom.", med:"Huffing gas fumes all day has definitely taken its toll on me.", good:"Delicious! Thanks, man.", chat:"I always wanted to work at a gas station. Seriously."}, Mo:{tasks:[], nam:"Mo", nick:"Mo", hood:"Yippie", tip:30, poor:"This is disgusting... I should have just bought the pizza here.", med:"Im used to mediocrity, so this is no big let down.", good:"Nom nom nom.... this is great!", chat:"Can't you see I'm busy shopping?"}, Peterson:{tasks:[], nam:"Officer Peterson", nick:"Officer Peterson", building:"Club Easy", hood:"Uptown", tip:20, poor:"Gross! Is this some sort karmic retribution?", med:"What!?!? I'm just taking this home to my wife and kids. Yeah, my wife and kids....", good:"YUMMMY! I would invite you in, but I'm bringing shame upon my family in here. ", chat:"Nothing to see here. Just checking out the.... scene."}, Giblet:{tasks:[1], nam:"Officer Giblet", nick:"Officer Giblet", building:"Police Station", hood:"Midtown", tip:15, poor:"This pizza is breaking multiple laws of freshness and taste. Try a little harder next time.", med:"Don't tell anyone, but my true calling is modern dance.", good:"Great job! Yummy yummy yum yum..... yum.", choice1:false, has1:"CopCar", wants1:"Donut", clue1:"Boy, I sure am hungry...", give1:"What an impressive donut! Such craftsmanship, such flavor. I feel moved to just give you my car. Just take it before I finish this donut and change my mind.", chat:"For a good time, use the 'copsnrobbers' password..."}, End:{tasks:[], nam:"End-Times Guy", nick:"End-Times Guy", building:"Public Square", hood:"Midtown", tip:20, poor:"The Mayans also predicted you would bring me a crappy pizza.", med:"I'm more of a 2013 man myself.", good:"This transcendant pizza will lubricate the planet's current shift of consciousness.", chat:"Yes yes, keep delivering your little pizzas while the world is coming to an end..."}, Henry:{tasks:[1], nam:"Dr. Henry", nick:"Dr. Henry", building:"Hospital", hood:"Uptown", tip:50, poor:"I wouldn't even feed this pizza to my patients!", med:"Well, it's better than cafeteria pizza...", good:"YUM! This pizza would cure any terminal disease.", chat:"What are all the nurses doing out here?", choice1:false, has1:"$500", wants1:"Watch", clue1:"I'm looking for just the right kind of watch to help me organize all my surgeries and drug binges. Know where I can get one?", give1:"Oh wow, what a great looking watch. Thanks so much!"}, Ed:{tasks:[], nam:"Fireman Ed", nick:"Ed", building:"Kubake Garden", hood:"Uptown", tip:15, poor:"Geez! Did you run this over with your car a few times? What a mess.", med:"Don't ask why I'm ordering Pizza at a Japanese Restaurant.", good:"Excellent pizza, this is....", chat:"This place had to change its name recently after a community uproar."}, Fidanka:{tasks:[], nam:"Fidanka Bletso", nick:"Fidanka", building:"De Basement", hood:"Uptown", tip:20, poor:"This is bad even for my unusually low standards.", med:"Not bad... Not good either.", good:"Great! The gimp is going to love this...", chat:"For some reason all we attract here is low-lifes."}, Joey:{tasks:[], nam:"Joey", nick:"Joey", building:"Army Depot", hood:"Hipstoria", tip:10, poor:"Barf! Seriously, try a little harder next time.", med:"It's edible, but barely...", good:"Rockin! My large, intimidating dogs will love this.", chat:"Hard to believe, but no one who shops here has ever been in the army."}, Phil:{tasks:[1], nam:"Phil Paisley", nick:"Phil", building:"Diner", hood:"Midtown", tip:5, poor:"Looks terrible! Good thing I've lost my ability to taste.", med:"I've managed to stay alive for 90 years, and it's all led up to this very moment when you sell me this completely mediocre pizza.", good:"Nice work sonny! I'm sure you'll go far in life. Or not.....", choice1:false, has1:"$50", wants1:"Pill1Bottle", clue1:"Say sonny, let me know if you see a bottle of pills around here. I think I've gone and lost them...", give1:"Oh, hooray.. my medicine! I can live again! Not sure what they actually did, but I'm pretty sure I really needed them.", chat:"Eh?"}, Agnes:{tasks:[], nam:"Agnes", nick:"Agnes", building:"Burger Lab", hood:"Hipstoria", tip:20, poor:"Gross! And I thought our meat was questionable...", med:"Have you tried the test tube shake?", good:"YUM!", chat:"Beef technology has really advanced in the past 10 years. Just ask the cows."}, Hector:{tasks:[], nam:"Hector Gonzales", nick:"Hector", building:"Dos Cojones", hood:"Hipstoria", tip:30, poor:"My friend, this pizza is just not very good.", med:"It's okay I suppose. Although, why did I order it in the first place?", good:"Wow! Excellent job...", chat:"Have you tried our 'Deep Fried Surprise'?"}, Marvin:{tasks:[], nam:"Marvin Williams", nick:"Marve", hood:"Cashola", building:"Eternal Sunset", tip:50, poor:"I didnt order this! Wait, maybe I did.", med:"Did I ever tell you about the time I, uh.... hmmm, nevermind.", good:"I'm not really going to eat this... I just wanted someone to talk to.", chat:"Yesterday I saw a weirdo hide some huge shiny thing around the mall..."}, Deon:{tasks:[], nam:"Deon", nick:"Deon", hood:"Uptown", building:"Damn! Club", tip:50, poor:"Is this supposed to be pizza?", med:"I would let you in but I can't actually move my body.", good:"Great pizza. You're still not getting in though.", chat:"You're too young to see what's going on in here."}, Edna:{tasks:[], nam:"Edna May", nick:"Edna", hood:"Uptown", building:"Booty Club", tip:30, poor:"Gross! What a party pooper you are.", med:"You only go round once...", good:"Woohoo! The male dancers, er... entertainers will love this.", chat:"Please dont tell my son Tony you saw me here..."}, Sally:{tasks:[1], nam:"Sally Monster", nick:"Sally", hood:"South Hipstoria", building:"Monstercorp", tip:50, poor:"How is my daddy supposed to take over the city when nourished with nasty pizza?", med:"We're not evil or anything, it's just my daddy's last name.", good:"Yummy! This will help my daddy's plan quite nicely...", chat:"Monstercorp (trademark) can supply all your needs!", choice1:false, has1:"Clock", wants1:"Lollipop", clue1:"Working the machines all day in total darkness takes its toll on a 6 year old girl like myself. What would be nice is a little candy to brighten my day.", give1:"Oh, what a delicious lollipop! Here, take this clock. It's one of the hundreds of crappy items we make here. Have a nice day!"}, Oliver:{tasks:[1], nam:"Oliver Parkins", nick:"Oliver", hood:"Midtown", building:"Castle of Comics", tip:20, poor:"This pizza is as bad as 'Bendy Man' issue 35!!!", med:"You're my only friend, besides Batman.", good:"Outstanding pizza! Would you like to play some Dungeons and Dragons?", choice1:false, has1:"Briefcase", wants1:"Pair1of1Dice", clue1:"AGGHH! I've lost my favorite pair of dice! I can't properly roleplay without them...", give1:"Oh thank goodness... I was starting to enter a very dark place without my beloved dice. Take this... some guy left it here yesterday.", chat:"Can't you see I'm busy?"}, Leroy:{tasks:[], nam:"Leroy LeRoe", nick:"Leroy", hood:"Hipstoria", building:"", tip:20, poor:"The tire swing will not be pleased with this crappy pizza.", med:"Want to swing in the tire with me?", good:"What a groovy pizza! The tire swing will love it...", chat:"This tire swing is actually a time machine."}, Ralph:{tasks:[1], nam:"Ralph", nick:"Ralph", hood:"Zappa Park", building:"", tip:100, poor:"I should have figured this pizza would suck.", med:"Whoa! I didn't think you would actually drive out here.", good:"Thanks for the extra effort, man.", chat:"If you hadn't noticed, I prefer to be left alone...", choice1:false, has1:"Goblet", wants1:"Drums", clue1:"I realize I'm reinforcing a sterotype here, but somehow I've lost my hand drums. You seems like a dude on the move to me.... let me know if you spot them.", give1:"Thanks man, with these drums I can now properly jam with the tree spirits. Take this old cup... I prefer to just drink right from the river."}, Lance:{tasks:[], nam:"Lance Chestfield", nick:"Lance", hood:"Uptown", tip:10, poor:"You're going get a serious spanking for this crappy pizza.", med:"Not bad. What do you think of my bare chest?", good:"This pizza looks fabulous! Want a free ride on my firetruck?", chat:"Ah, to be a fireman...."}, Candi:{tasks:[1], nam:"Candi Meadows", nick:"Candi", hood:"Cashola", tip:25, poor:"Eewwwww! You've broken my school spirit.", med:"Good enough I guess.", good:"Wow! Totally awesome!", chat:"Huh?", choice1:false, has1:"Ring", wants1:"Clock", clue1:"For the school talent show I've decided to do a 45 minute interpretive dance about the illusory nature of time, and I need a crappy alarm clock to smash with a mallet at the very end. I don't really know where people go to buy cheap goods as I'm TOTALLY rich, but you look like you might be able to help me...", give1:"Oh great, this clock will do just fine... here, take this. My mom has like 15 of them..."}, Ray:{tasks:[], nam:"Ray Parker", nick:"Ray", hood:"Yippie", tip:25, poor:"I should have stuck with the food here.", med:"Hhhmmm... well It's better than nothing.", good:"Yum! Great job on this.", chat:"Why do I always end up eating here?"}, Annie:{tasks:[1], nam:"Annie", nick:"Annie", hood:"Hipstoria", tip:10, poor:"You've broken my little 5 year old heart with this low quality pizza.", med:"I have a pet unicorn that lives in my imagination!", good:"YAY! What a nice pizza!", choice1:false, has1:"Wallet", wants1:"Teddy1Bear", clue1:"I lost my teddy bear! I haven't seen it since I was at the playground...", give1:"Oh, hooray! My teddy is back! Thanks so much, mister. Here... take my daddy's wallet!", chat:"My mommy tells me not to open the door for strangers, but here I am doing it anyway."}, Flip:{tasks:[1], nam:"Flip Williams", nick:"Flip", hood:"Yippie", building:"Deep Thoughts Headshop", tip:15, poor:"You've totally killed my buzz, man. This pizza is weak.", med:"Part of me feels this pizza is not that great, but the other part of me doesnt care.", good:"Wwwhhhhooooaaaaaa! Is it just me or is this the BEST pizza I've ever had?", choice1:false, has1:"Magic1Brownie", wants1:"Record", clue1:"Not to sound random or anything, but I really love old records.", give1:"Whoa! The 420 dreams of Uranus! This is one of my old favorite records... thanks, man. Here, take this brownie. I baked it myself...", chat:"I have a permit, I swear! Oh wait, you're not a cop, are you..."}, Wendy:{tasks:[1, 2, 3], nam:"Wendy Williams", nick:"Wendy", hood:"Hipstoria", tip:20, poor:"How do you expect to score points with me when you bring crappy pizzas?", med:"Sometimes I wish I didn't fry enormous rings of sugary dough for a living.", good:"Wow! What a tasty looking Pizza!", choice1:false, has1:"Hug", wants1:"Flower", clue1:"Lets stop the silly games. I'm your potential love interest and you're going to have to prove yourself somehow. First thing, I need a new flower for the garden outside.", give1:"heart1_Thanks so much for the tasty... uh, I mean beautiful flower! You seem cuter to me now for some reason. Come back soon, will ya... I probably have some more mindless chores for you.", choice2:false, has2:"Smooch", wants2:"Purse", clue2:"So some creep stole may favorite purse last week. Can you help me find it?", give2:"Oh wow! I never thought I would see it again, and it still has all of my.... stuff. Thanks so much! Please visit me soon... I have something important to tell you.", choice3:false, has3:"Donut", wants3:"Ring", clue3:"Well, life in this town is really short so we might as well get married. But I'm going to need a ring first.", give3:"Oh wow, I never thought this day would come... YES! I WILL MARRY YOU! And also, here's a tasty donut.", chat:"Hello there, beloved husband! How's the delivery scene today?"}, Blix:{tasks:[1], nam:"Blix Millions", nick:"Blix", hood:"Cashola", tip:50, poor:"You've given me the bad pizza blues...", med:"Sorry to rush off, but I've got some groupies here that need uh, backrubs.", good:"YEEEOOOWWW! My next B-side will be about how great this pizza is.", chat:"The other house is for the groupies...", choice1:false, has1:"Record", wants1:"Pair1of1Boots", clue1:"I've gone and lost my favorite pair of boots. Last time I remember wearing then was an all-night bender that went in some questionable directions...", give1:"Oh great, my boots! Thanks kid. Here, take this record. I made it 40 years ago when my music didnt suck."}, Susan:{tasks:[], nam:"Susan Spangler", nick:"Susan", hood:"Cashola", building:"Church of Selfology", tip:50, poor:"Your delivery skills could use some serious improvement.", med:"Not bad.... come back later for a free brainwashing!", good:"Very impressive. We'll be keeping our eye on you...", chat:"No solicitors please."}, Jack:{tasks:[1], nam:"Jack Powers", nick:"Jack", hood:"Uptown", building:"PowerMongers HQ", tip:25, poor:"I see the current economic crisis has greatly affected the quality of pizza delivery these days.", med:"Helping big business slowly destroy humanity has its perks, but what I really want to do is goat-herding.", good:"Excellent work, kid.", choice1:false, has1:"$250", wants1:"Briefcase", clue1:"By the way, have you seen my lucky briefcase?", give1:"Thanks kid! All my twisted schemes were in that briefcase.", chat:"Life is hard without a soul, but the money and chicks sure do help."}, Vito:{tasks:[1], nam:"Vito Piazano", nick:"Vito", hood:"Cashola", building:"Chez Whitey", tip:40, poor:"This pizza ain't cuttin it, kid... but I'll give you the benefit of the doubt and assume you don't know who I am.", med:"Not bad at all... give uncle Tony my regards.", good:"Nice work, kid. You ever consider a career in organized crime?", chat:"Give uncle Tony my regards.", choice1:false, has1:"Lollipop", wants1:"Camera", clue1:"Maybe you can do me a little favor. I was casing... uh, admiring the pier area north of here, and I think I left my camera there. Maybe you could get it back for me?", give1:"Nice work kid, it's good to have my camera back. I know it seems strange, but you gotta work your way up from the bottom around here. All the new guys work for lollipops."}, Hitop:{tasks:[1], nam:"Harry Hitop", nick:"Harry", hood:"Cashola", building:"The Castle", tip:100, poor:"How'd you know I LOVE terrible pizza???", med:"You look out of breath! Maybe I should straighten the driveway...", good:"Nice job! Let me know if you ever want a job cleaning moats.", choice1:false, has1:"$500", wants1:"Goblet", clue1:"Everyone knows that a golden castle needs a golden goblet. Perhaps you've seen one around town?", give1:"Wow! What a nice and shiny goblet... I can't wait to drink my morning liquid gold from this.", chat:"The password 'toomuchcoffee' could be fun..."}, Raimy:{tasks:[1], nam:"Raimy Michaels", nick:"Raimy", hood:"Yippie", tip:25, poor:"Sorry, but bad pizza and mind expansion just don't mix.", med:"I'm a bit confused right now, but I do know this is completely mediocre.", good:"Every atom of the beautiful pizza is dancing with the grace and dexterity of Shiva!", chat:"Last thing I remember is taking the blue pill. Then I'm climbing out from a huge hole in the ground and chewing my way through this fence. Thoughts on that?", choice1:false, has1:"Watch", wants1:"Gold1Brick", clue1:"Anyway, I'm trying to launch my brain into the 7 Realms of Ancient Knowledge, but I need about 8 pounds of solid gold to complete the 'formula'.", give1:"I wasn't really expecting you to come through with an entire brick of gold, but thanks a bunch! Here, I won't need this where I'm going. See you on the other side..."}, Earl:{tasks:[], nam:"Earl", nick:"Earl", hood:"Yippie", tip:25, poor:"It's a good thing reality is just a shared illusion, else I would be very upset about this pizza.", med:"I will now meditate on the mediocrity of this pizza.", good:"Delivering a great pizza is the first step on the path to post-enlightenment.", chat:"Ssshhhh.... I'm discovering my buddha nature."}, Charlie:{tasks:[], nam:"Charlie", nick:"Charlie", hood:"Yippie", tip:25, poor:"I may be knockin on heaven's door, but a know a bad pizza when I taste it.", med:"Wanna go skinny dippin in that pond with me?", good:"You've made me a happy old man, son.", chat:"I used to be king of this playground back in 1875."}, Dale:{tasks:[1], nam:"Dale", nick:"Dale", hood:"Yippie", building:"Dead Enz Pub", tip:25, poor:"Just leave the pizza next to me and I'll get to it eventually...", med:"If my hand is moving it means I'm still alive.", good:"Smells good, but I'll probably just use it as a pillow.", chat:"Glug glug glug....", choice1:false, has1:"$200", wants1:"Wallet", clue1:"I think it's time i get my life back on track. First thing I'll need is a wallet. That makes sense, right?", give1:"Oh great, this wallet will do just fine. You should keep the money... I'm actually stinkin' rich."}, Todd:{tasks:[], nam:"Todd Burbank", nick:"Todd", hood:"Yippie", building:"Liquor Palace", tip:25, poor:"Oh dear lord, this is really bad.", med:"Not bad, kid. No free booze for you though.", good:"Yum! Great job, kid.", chat:"Do you think the statues are over the top?"}, Skip:{tasks:[], nam:"Skip", nick:"Skip", hood:"Cashola", tip:50, poor:"Is this some sort of karmic retribution for my criminal lifestyle?", med:"Let's just pretend you didnt see me, okay?", good:"Great job! I would stay and chit-chat, but as you can see I have to run...", chat:"Uh oh..."}, Olga:{common:true, tasks:[], nam:"Olga Voog", nick:"Olga", hood:"Midtown", tip:10, poor:"Gross!", med:"This is good enough I suppose.", good:"Yummy! Thanks alot."}, Marlin:{common:true, tasks:[], nam:"Marlin Cheesers", nick:"Marlin", hood:"Midtown", tip:10, poor:"Horrible pizza!", med:"Not bad...", good:"Great! Thanks a bunch."}, William:{common:true, tasks:[], nam:"William Dizznuts", nick:"William", hood:"Midtown", tip:10, poor:"Ugh... is this pizza?", med:"This will do just fine. Thanks.", good:"Great job!"}, Logan:{common:true, tasks:[], nam:"Logan", nick:"Logan", hood:"Midtown", tip:10, poor:"Barf!", med:"Good enough...", good:"Yum! Thanks alot."}, Tom:{common:true, tasks:[], nam:"Tom Bones", nick:"Tom Bones", hood:"Midtown", tip:10, poor:"This is pretty bad. Oh well...", med:"I've had better, but this will do.", good:"Not bad at all!"}, Ducky:{common:true, tasks:[], nam:"Ducky", nick:"Ducky", hood:"Midtown", tip:10, poor:"Quack.", med:"Quack quack...", good:"Quack quack quack!!"}, Squid:{common:true, tasks:[], nam:"The Squid", nick:"The Squid", hood:"Midtown", tip:10, poor:"Blllarrrgggg!", med:"Decent enough....", good:"*Slllluuurrrpppp* Sssssscrumptousssss!"}, Gary:{common:true, tasks:[], nam:"Gary Numan", nick:"Gary", hood:"Midtown", tip:10, poor:"This is pretty bad.", med:"Good enough for me.", good:"Yummy! Thanks man..."}, Laura:{common:true, tasks:[], nam:"Laura Zeebits", nick:"Laura", hood:"Midtown", tip:10, poor:"Ew! What is this?", med:"Eh, good enough...", good:"Great job!"}, Mildred:{common:true, tasks:[], nam:"Mildred Killjoy", nick:"Mildred", hood:"Midtown", tip:10, poor:"I'm confused... is this actually pizza?", med:"I suppose it will do...", good:"Very tasty. Thank you so much!"}, Jake:{common:true, tasks:[], nam:"Jake Poleman", nick:"Jake", hood:"Uptown", tip:15, poor:"This is not cutting it at all!", med:"I've had better, but this will do.", good:"Yum! Keep 'em coming!"}, Paul:{common:true, tasks:[], nam:"Paul Poleman", nick:"Paul", hood:"Uptown", tip:15, poor:"This is not cutting it at all!", med:"I've had better, but this will do.", good:"Yum! Keep 'em coming!"}, Mandy:{common:true, tasks:[], nam:"Mandy Johnson", nick:"Mandy", hood:"Uptown", tip:15, poor:"Gross! I asked for pizza, not mushy mush.", med:"This will do I suppose.", good:"Yum! Thanks, mister."}, Dave:{common:true, tasks:[], nam:"Dave Grobble", nick:"Dave", hood:"Uptown", tip:15, poor:"This is terrible.", med:"This is decent.", good:"This is good. Thanks..."}, Missy:{common:true, tasks:[], nam:"Missy Monkers", nick:"Missy", hood:"Uptown", tip:15, poor:"Rowr?", med:"Meow.", good:"Meow!!!"}, Mick:{common:true, tasks:[], nam:"Mick Jenkins", nick:"Mick", hood:"Uptown", tip:15, poor:"I put on my underwear for this crap?", med:"It's good enough for this love machine.", good:"Nice! The ladies will love this..."}, Judy:{common:true, tasks:[], nam:"Judy Little", nick:"Judy", hood:"Uptown", tip:15, poor:"Im very dissapointed in this pizza.", med:"I suppose it will do.", good:"Not bad at all, young man."}, Rob:{common:true, tasks:[], nam:"Rob Zombo", nick:"Rob", hood:"Uptown", tip:15, poor:"Ugh! This is terrible.", med:"Have you met my brother Lance?", good:"Great Job!"}, XL3000:{common:true, tasks:[], nam:"XL3000", nick:"XL3000", hood:"Uptown", tip:15, poor:"This pizza is below my requirements for taste and freshness.", med:"This pizza meets my requirements for taste and freshness.", good:"This pizza surpasses my requirements for taste and freshness."}, Thad:{common:true, tasks:[], nam:"Thad Scurry", nick:"Thad", hood:"Hipstoria", tip:20, poor:"No no no!! NO!", med:"Yeah yeah... pretty good.", good:"Wowie! Good good!"}, Diana:{common:true, tasks:[], nam:"Diana", nick:"Diana", hood:"Hipstoria", tip:20, poor:"Dirty dirty pizza! WHY?", med:"A bit dirty but good.", good:"Very nice... thanks!"}, Sean:{common:true, tasks:[], nam:"Sean Pengo", nick:"Sean", hood:"Hipstoria", tip:20, poor:"This is crap!", med:"Yeah, good enough.", good:"Woohooo! Very good..."}, Matt:{common:true, tasks:[], nam:"Matt McDonald", nick:"Matt", hood:"Hipstoria", tip:20, poor:"Um... no good.", med:"It'll do. Thanks, I guess.", good:"Yeah! Very tasty."}, Suzanne:{common:true, tasks:[], nam:"Suzanne Saltpill", nick:"Suzanne", hood:"Hipstoria", tip:20, poor:"Blllecchhh!", med:"Decent but not so great.", good:"Yahoo! Very cool...."}, Dan:{common:true, tasks:[], nam:"Dan Winterbutt", nick:"Dan", hood:"Hipstoria", tip:20, poor:"OOOUUUGGGHHHHH.... NOOOOO!", med:"BLLUURRGGGGG...", good:"YYYYYYYEEEAAHHHHH....."}, Wally:{common:true, tasks:[], nam:"Wally Mandibles", nick:"Wally", hood:"Hipstoria", tip:20, poor:"Blip blip! Game over! Fail!", med:"Good enough... blip blip blip...", good:"Zoinks! Very good good good..."}, Carmen:{common:true, tasks:[], nam:"Carmen Gonzales", nick:"Carmen", hood:"Hipstoria", tip:20, poor:"Gross...", med:"It will do, I suppose.", good:"Wow! Thanks a bunch."}, Rex:{common:true, tasks:[], nam:"Rex", nick:"Rex", hood:"Hipstoria", tip:20, poor:"Gggrrrrrrr......", med:"Arf.", good:"Ruff Ruff Ruff!!!!"}, Bill:{common:true, tasks:[], nam:"Bill Workman", nick:"Bill", hood:"Zappa Park", tip:10, poor:"No good! Tyr harder next time.", med:"Good enough.", good:"Very tasty. Thanks, kid."}, Frank:{common:true, tasks:[], nam:"Frank Workman", nick:"Frank", hood:"Zappa Park", tip:10, poor:"No good! Tyr harder next time.", med:"Good enough.", good:"Very tasty. Thanks, kid."}, Ruby:{common:true, tasks:[], nam:"Rudy Thursday", nick:"Rudy", hood:"Cashola", tip:30, poor:"This is disgusting!", med:"I suppose it will do.", good:"Splendid!"}, Dahlia:{common:true, tasks:[], nam:"Dahlia Davis", nick:"Dahlia", hood:"Cashola", tip:30, poor:"Gross!", med:"It's okay I guess.", good:"Yummy!"}, Steven:{common:true, tasks:[], nam:"Steven Snizzle", nick:"Steven", hood:"Cashola", tip:30, poor:"How ghastly!", med:"I've had better.", good:"Mmmnn... Delicious!"}, Robin:{common:true, tasks:[], nam:"Robin Reynolds", nick:"Robin", hood:"Cashola", tip:30, poor:"This is unnaceptable!", med:"I should have expected mediocrity.", good:"Very impressive, young man!"}, Tiffany:{common:true, tasks:[], nam:"Tiffany", nick:"Tiffany", hood:"Cashola", tip:30, poor:"Gag me with a spoon!", med:"I've had better...", good:"Totally awesome!"}, Pookie:{common:true, tasks:[], nam:"Pookie", nick:"Pookie", hood:"Cashola", tip:30, poor:"BBBAARRRFFF!", med:"HHHMMMMMMNNNN.....", good:"WOO HOO!!!"}, Lizzie:{common:true, tasks:[], nam:"Lizzie", nick:"Lizzie", hood:"Cashola", tip:30, poor:"You must not really care about your job, huh?", med:"Good enough I guess.", good:"Wow! Delicious... thanks kid."}, Miguel:{common:true, tasks:[], nam:"Miguel Mondavi", nick:"Miguel", hood:"Cashola", tip:30, poor:"Bleck! This is terrible.", med:"Eh, good enough.", good:"Great job!"}, Vicky:{common:true, tasks:[], nam:"Vicky Vicari", nick:"Vicky", hood:"Yippie", tip:25, poor:"Gross!", med:"Not so good, but it's still pizza.", good:"Yummy! Thanks mister..."}, Belinda:{common:true, tasks:[], nam:"Belinda Yowlers", nick:"Belinda", hood:"Yippie", tip:25, poor:"Yuck!", med:"Good enough.", good:"Yum! Thanks alot."}, Gus:{common:true, tasks:[], nam:"Gus", nick:"Gus", hood:"Yippie", tip:25, poor:"Blleeeaccckkkkkk...", med:"Gurgle...", good:"Agoooooooooooo!"}, Kenny:{common:true, tasks:[], nam:"Kenny", nick:"Kenny", hood:"Yippie", tip:25, poor:"This is the worst pizza I've ever had.", med:"Good enough...", good:"This is the best pizza I've ever had."}, Orville:{common:true, tasks:[], nam:"Orville Boondocks", nick:"Orville", hood:"Yippie", tip:25, poor:"Wooooooo! Not good...", med:"Yeow! Not bad...", good:"Wahooooooo! Yummy yummy...."}, Moses:{common:true, tasks:[], nam:"Moses Mitchel", nick:"Moses", hood:"Yippie", tip:25, poor:"Are you trying to kill an old man with this crap?", med:"Not bad at all, kid.", good:"Wow! This is great."}, Rosemary:{common:true, tasks:[], nam:"Rosemary Babylon", nick:"Rosemary", hood:"Yippie", tip:25, poor:"Am I supposed to feed this junk to my kids?", med:"Thanks!", good:"Oh my goodness, this is really good."}, Rock:{common:true, tasks:[], nam:"Rock Skullfist", nick:"Rock", hood:"Yippie", tip:25, poor:"Normally bad pizza is punished with a beating, but I'm feeling nice today.", med:"This will do, I guess.", good:"Good job, kid."}, Shaun:{common:true, tasks:[], nam:"Shaun", nick:"Shaun", hood:"Yippie", tip:25, poor:"Yuck! This is some nasty pizza.", med:"Thanks!", good:"Yum! This is really good..."}};
}
}
}//package game
Section 101
//CheckPoint (game.CheckPoint)
package game {
import flash.geom.*;
class CheckPoint {
var center:Point;
var id:int;
var tile:Point;
var out:Array;
function CheckPoint(_arg1:int, _arg2:Number, _arg3:Number):void{
center = new Point(_arg2, _arg3);
tile = new Point(Math.round(((_arg2 * 20) / 54)), Math.round(((_arg3 * 20) / 54)));
this.id = _arg1;
out = new Array();
}
}
}//package game
Section 102
//Compress (game.Compress)
package game {
import flash.utils.*;
public class Compress {
private static var lineBreak:Boolean;
private static var lookupObject:Object = buildLookUpObject();
private static var _b64Chars:Array = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/");
function compress(_arg1:String):String{
var _local2:ByteArray = new ByteArray();
_local2.writeUTFBytes(_arg1);
_local2.compress();
return (encode64(_local2, false));
}
function uncompress(_arg1:String):String{
var _local2:ByteArray = decode64(_arg1);
_local2.uncompress();
return (_local2.toString());
}
public static function encode64String(_arg1:String):String{
var _local2:ByteArray = new ByteArray();
_local2.writeUTFBytes(_arg1);
return (_encodeBytes(_local2));
}
private static function _decodeStringPacket(_arg1:String):ByteArray{
var _local2:ByteArray = new ByteArray();
var _local3:uint = lookupObject[_arg1.charAt(0)];
var _local4:uint = lookupObject[_arg1.charAt(1)];
var _local5:uint = lookupObject[_arg1.charAt(2)];
var _local6:uint = lookupObject[_arg1.charAt(3)];
_local2.writeByte(((_local3 << 2) | (_local4 >> 4)));
if (_arg1.charAt(2) != "="){
_local2.writeByte(((_local4 << 4) | (_local5 >> 2)));
};
if (_arg1.charAt(3) != "="){
_local2.writeByte(((_local5 << 6) | _local6));
};
return (_local2);
}
private static function buildLookUpObject():Object{
var _local1:Object = new Object();
var _local2:int;
while (_local2 < _b64Chars.length) {
_local1[_b64Chars[_local2]] = _local2;
_local2++;
};
return (_local1);
}
private static function _encodeBytePacket(_arg1:ByteArray):String{
var _local2 = "";
var _local3:uint = _arg1.length;
_local2 = (_local2 + _b64Chars[(_arg1[0] >> 2)]);
if (_local3 == 1){
_local2 = (_local2 + _b64Chars[((_arg1[0] << 4) & 63)]);
_local2 = (_local2 + "==");
} else {
if (_local3 == 2){
_local2 = (_local2 + _b64Chars[(((_arg1[0] << 4) & 63) | (_arg1[1] >> 4))]);
_local2 = (_local2 + _b64Chars[((_arg1[1] << 2) & 63)]);
_local2 = (_local2 + "=");
} else {
_local2 = (_local2 + _b64Chars[(((_arg1[0] << 4) & 63) | (_arg1[1] >> 4))]);
_local2 = (_local2 + _b64Chars[(((_arg1[1] << 2) & 63) | (_arg1[2] >> 6))]);
_local2 = (_local2 + _b64Chars[(_arg1[2] & 63)]);
};
};
return (_local2);
}
public static function decode64(_arg1:String):ByteArray{
return (_decodeString(_arg1));
}
public static function encode64(_arg1:ByteArray, _arg2:Boolean):String{
lineBreak = _arg2;
return (_encodeBytes(_arg1));
}
private static function _encodeBytes(_arg1:ByteArray):String{
var _local3:int;
var _local5:ByteArray;
var _local2 = "";
_arg1.position = 0;
var _local4:int;
while ((_local3 = _arg1.bytesAvailable)) {
_local3 = Math.min(3, _local3);
_local5 = new ByteArray();
_arg1.readBytes(_local5, 0, _local3);
_local2 = (_local2 + _encodeBytePacket(_local5));
_local4 = (_local4 + 4);
if (((lineBreak) && (((_local4 % 76) == 0)))){
_local2 = (_local2 + "\n");
_local4 = 0;
};
};
return (_local2);
}
private static function _decodeString(_arg1:String):ByteArray{
var _local2:String = _arg1;
var _local3:ByteArray = new ByteArray();
var _local4 = "";
var _local5:int = _local2.length;
var _local6:int;
while (_local6 < _local5) {
_local4 = (_local4 + _local2.charAt(_local6));
if (_local4.length == 4){
_local3.writeBytes(_decodeStringPacket(_local4));
_local4 = "";
};
_local6++;
};
return (_local3);
}
}
}//package game
Section 103
//ContactListener (game.ContactListener)
package game {
import Box2D.Collision.*;
import Box2D.Dynamics.*;
import game.*;
class ContactListener extends b2ContactListener {
var contactList:Array;
function ContactListener():void{
contactList = new Array();
}
override public function Add(_arg1:b2ContactPoint):void{
var _local2:* = _arg1.shape1.GetBody();
var _local3:* = _arg1.shape2.GetBody();
var _local4:* = _local2.GetUserData();
var _local5:* = _local3.GetUserData();
var _local6:Boolean = _arg1.shape1.m_isSensor;
var _local7:Boolean = _arg1.shape2.m_isSensor;
var _local8:String = _local4.ID;
var _local9:String = _local5.ID;
var _local10:Number = _arg1.velocity.Length();
if (_local4.tile){
if (_local4.tile.clip){
if ((_local5 is Traffic)){
_local4.tile.clip.play();
};
};
};
if (_local5.tile){
if (_local5.tile.clip){
if ((_local4 is Traffic)){
_local5.tile.clip.play();
};
};
};
if ((_local4 is Mover)){
_local4.contact(_local5);
};
if ((_local5 is Mover)){
_local5.contact(_local4);
};
if (_local8 == "TRAFFIC"){
if (((_local6) && (!(_local7)))){
_local4.colliding = true;
if ((_local5 is Vehicle)){
_local4.collidingSpeed = (_local5.speed - Math.random());
} else {
if ((_local5 is Pedestrian)){
_local4.collidingSpeed = 0;
};
};
};
};
if (_local9 == "TRAFFIC"){
if (((_local7) && (!(_local6)))){
_local5.colliding = true;
if ((_local4 is Vehicle)){
_local5.collidingSpeed = (_local4.speed - Math.random());
} else {
if ((_local4 is Pedestrian)){
_local5.collidingSpeed = 0;
};
};
};
};
if (_local8 == "PEDESTRIAN"){
_local4.colliding = true;
if ((_local5 is Traffic)){
if (!_local7){
if (_local5.speed > 10){
_local4.tumble(_local5.angle, _local10);
} else {
if (_local5.speed > (_local5.main.mods.bouncytown) ? 100 : 20){
_local4.dead = true;
};
};
};
};
};
if (_local9 == "PEDESTRIAN"){
_local5.colliding = true;
if ((_local4 is Traffic)){
if (!_local6){
if (_local4.speed > 10){
_local5.tumble(_local4.angle, _local10);
} else {
if (_local4.speed > (_local5.main.mods.bouncytown) ? 100 : 20){
_local5.dead = true;
};
};
};
};
};
if (_local8 == "CAR"){
_local4.impact = _local10;
_local4.aa = 0;
} else {
if (_local9 == "CAR"){
_local5.impact = _local10;
_local5.aa = 0;
};
};
var _local11:* = ((((_local8 == "CAR")) && ((((((((_local9 == "TRAFFIC")) || ((_local9 == "POLICE")))) && (!(_local7)))) || (((!((_local9 == "TRAFFIC"))) && (!((_local9 == "POLICE"))))))))) ? _local3 : ((((_local5.ID == "CAR")) && ((((((((_local8 == "TRAFFIC")) || ((_local8 == "POLICE")))) && (!(_local6)))) || (((!((_local8 == "TRAFFIC"))) && (!((_local8 == "POLICE"))))))))) ? _local2 : null;
if (((!((_local11 == null))) && ((contactList.indexOf(_local11) == -1)))){
contactList.push(_local11);
};
_local2 = null;
_local3 = null;
_local4 = null;
_local5 = null;
}
override public function Persist(_arg1:b2ContactPoint):void{
Add(_arg1);
}
override public function Remove(_arg1:b2ContactPoint):void{
var _local2:* = _arg1.shape1.GetBody();
var _local3:* = _arg1.shape2.GetBody();
var _local4:* = ((_local2.GetUserData().ID == "CAR")) ? _local3 : ((_local3.GetUserData().ID == "CAR")) ? _local2 : null;
if (((!((_local4 == null))) && ((contactList.indexOf(_local4) >= 0)))){
contactList.splice(contactList.indexOf(_local4), 1);
};
_local2 = null;
_local3 = null;
}
}
}//package game
Section 104
//Game (game.Game)
package game {
import flash.events.*;
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import flash.utils.*;
import flash.geom.*;
import flash.system.*;
import flash.net.*;
import flash.ui.*;
public class Game extends Sprite {
public const SCREEN_WIDTH:int = 800;
public const ERASE_BUFFER:int = 7;
public const NUM_LAYERS:int = 8;
public const SCREEN_HEIGHT:int = 600;
public const CAR_LAYER:int = 4;
public const ITERATIONS:int = 20;
public const MAP_LAYERS:int = 6;
public const CAMERA_LIMIT:Number = 25;
public const TILE_SIZE:int = 54;
public const DEG2RAD:Number = 0.0174532925199433;
public const DRAW_BUFFER:int = 6;
public const START_Y:int = 221;
public const START_X:int = 188;
public const RAD2DEG:Number = 57.2957795130823;
var delQNum:int;
var carSelecting:Boolean;
var currentPlayerCars:Array;
var sfxVolume:int;// = 2
var pizzaBoy:PizzaBoy;
var type1:Array;
var type2:Array;
var type3:Array;
var type4:Array;
var roadie:Boolean;
var mimesHit:int;
var removed:Array;
var cc:int;// = 0
public var screen:Sprite;
public var del_good:int;
var activeChars:Array;
var cx:Number;
var cy:Number;
var hoodPeds:Object;
var closeCPS:Array;
var carBuying:Boolean;
var carsForSale:Array;
var pedestrians:Array;
var polyDef:b2PolygonDef;
var skulls:Array;
var actionLayer:Sprite;
var tilePos:Object;
var interScript:Object;
var pizzaQ:Object;
var saveNum:int;
var copLocs:Array;
var pizzas:Object;
var misc:Array;
var money:Array;
var contactListener:ContactListener;
var hud:Boolean;// = true
var mapFile:String;// = "betaMap"
public var TIME_STEP:Number;// = 0.0166666666666667
public var busts:int;
var carTypes:Object;
var bits:Array;
var circleDef:b2CircleDef;
var zsort:Array;
var nitros:Array;
var hood:String;
var pedChance:Number;
var cAct:int;
var tileShapes:Object;
var layers:Array;
var pCar:Array;
var savedTasks:Object;
var pizzaLvls:Array;
var tileFill:Object;
var pedData:Object;
var map:Array;
var killedChars:Array;
var muted:int;// = 0
var delHoods:Array;
var gameName:String;// = "pizzacity"
var musicVolume:int;// = 2
var playerCars:Array;
var lastBust:int;
var mods:Object;
var newGame:Boolean;
var firstRun:Boolean;// = true
var oChasing:Boolean;
public var firedAt:int;
var ranks:Array;
var ngc:int;
var robbersHit:int;
var tileGround:Object;
var delCommon:Object;
var pedMax:int;
var copChance:Number;
var carSelect:MovieClip;
var KEYS:Array;
public var delTotal:int;
var traffic:Array;
var gasAlert:Boolean;
var delANum:int;
var shakeC:int;
var clownsHit:int;
var damageHistory:Array;
var trafficMax:int;
public var kong;
var debugDraw:Boolean;// = false
var boxDef:b2PolygonDef;
var stx:int;
var sty:int;
var clownLevels:Array;
var hoodCars:Object;
var carColors:Object;
var fTimer:Timer;
var currentCarSale:Array;
var delChars:Array;
var forceCop:int;
var score:int;
public var plName:String;
var debugLayer:Sprite;
var firstHit:Boolean;
var domainSTR:String;
var hoods:Object;
var pedsKilled:int;
public var interF:Interface;
var firstPoor:Boolean;
var fpsAdj:Number;// = 1
var oldG:String;
var bodyDef:b2BodyDef;
var carX:int;
var carY:int;
public var savedGame:SharedObject;
var hoodRanges:Array;
var actionItems:Array;
var loadEXT:Boolean;// = false
var level:int;
var radarPoints:Array;
var trafficChance:Number;
public var del_med:int;
var currentWho:String;
var lastSecondSpawns:int;// = 0
var currentCar:Mover;
var copCar:Boolean;
var retired:Boolean;
var delUnique:Object;
var gameState:String;// = "_startScreen"
var chances:Object;
var currentTile:MovieClip;
var input:Input;
var radarData:Object;
var rest:Boolean;
public var del_poor:int;
var chars:Object;
var audio:Audio;
var firstMoney:Boolean;
public var inv:Inventory;
var baseDir:String;// = ""
public static const FPS:int = 60;
public static const DRAW_SCALE:Number = 20;
public static const TileSets:Array = [null, TileSet1, TileSet2, TileSet3, TileSet4, TileSet5, TileSet6, TileSet7, TileSet8, TileSet9, TileSet10, TileSet11, TileSet12, TileSet13];
static var chasing:Boolean;
static var ground:Array;
static var checkPoints:Object;
static var frame:int;
static var world:b2World;
static var car:Vehicle;
public function Game(_arg1):void{
type1 = [0, 1, 0, 0];
type2 = [0, 1, 0, 1];
type3 = [0, 3, 0, 3];
type4 = [-4, 3, -4, 3];
hoods = {ZP:[0, 120, 0, 150], HP:[0, 115, 151, 300], UT:[121, 285, 0, 150], MT:[116, 295, 151, 300], YP:[286, 450, 0, 150], CS:[296, 450, 151, 300]};
zsort = [805, 806, 807, 808, 809, 810, 6856, 6857, 6858, 6859, 6860, 6861, 6863, 9206, 9207, 9208, 9209, 9210, 9211, 9212, 9213];
carTypes = {Max:{speed:35, defense:0.33, gasMax:20, gasRate:0.001}, Goblin:{l:1.9, w:1.1, mass:5, speed:25, accel:20, defense:1, gasMax:7, gasRate:0.0005, cap:6, cost:0}, Bug:{l:2.2, w:1.1, mass:5.5, speed:27, accel:20, defense:0.9, gasMax:8, gasRate:0.0006, cap:12, cost:250}, Wagon:{l:2.6, w:1.1, mass:6.5, speed:27, accel:22, defense:0.7, gasMax:11, gasRate:0.0006, cap:16, cost:400}, Colt:{l:2.4, w:1.1, mass:5.5, speed:29, accel:20, defense:0.75, gasMax:9, gasRate:0.0005, cap:18, cost:750}, Jeep:{l:2.4, w:1.4, mass:7.5, speed:30, accel:22, defense:1, gasMax:7, gasRate:0.0006, cap:25, cost:1000}, Spunk:{l:1.9, w:1.1, mass:5, speed:32, accel:24, defense:0.75, gasMax:10, gasRate:0.00025, cap:20, cost:2000}, Bummer:{l:2.6, w:1.4, mass:10, speed:33, accel:22, defense:0.5, gasMax:20, gasRate:0.001, cap:30, cost:3000}, Cop:{l:2.5, w:1.25, mass:8, speed:33, accel:25, defense:0.6, gasMax:15, gasRate:0.00075, cap:22, cost:0}, Roadie:{l:2.5, w:1.25, mass:7, speed:35, accel:27, defense:0.65, gasMax:15, gasRate:0.0009, cap:30, cost:5000}};
hoodCars = {Midtown:[["Colt", [0, 1, 2, 6]], ["Wagon", [2, 4, 6]], ["Goblin", [0, 2, 4]], ["Jeep", [3, 4, 6]]], Hipstoria:[["Colt", [3, 4, 5, 6]], ["Goblin", [0, 1, 5]], ["Jeep", [1, 2, 3]], ["Spunk", [4, 5, 6]], ["Bug", [0, 2, 3, 4]]], Uptown:[["Colt", [0, 2, 5]], ["Wagon", [3, 4, 6]], ["Jeep", [0, 4, 5]], ["Spunk", [1, 2, 3]]], Zappa_Park:[["Colt", [0, 2, 5]], ["Wagon", [3, 4, 6]], ["Goblin", [0, 1, 3]], ["Spunk", [1, 2, 3]], ["Bug", [5, 3, 6]]], Yippie:[["Colt", [0, 2, 5, 6]], ["Wagon", [1, 2, 3, 6]], ["Goblin", [0, 2, 3, 4]], ["Jeep", [1, 2, 4, 6]], ["Bug", [0, 1, 6]], ["Bummer", [1, 2, 4, 5]]], Cashola:[["Goblin", [1, 5]], ["Jeep", [0, 1, 4]], ["Spunk", [0, 2, 3, 4]], ["Bummer", [0, 3, 4, 6]]]};
carColors = {Colt:["Orange", "White", "Yellow", "Blue", "Pink", "Green", "Purple"], Wagon:["Orange", "Purple", "Olive", "Green", "Blue", "Pink", "Brown"], Goblin:["Orange", "Blue", "Yellow", "Grey", "Tan", "Purple"], Bug:["White", "Grey", "Red", "Yellow", "Pink", "Green", "Blue"], Jeep:["Orange", "Green", "Brown", "Yellow", "Blue", "Grey", "Olive"], Spunk:["Blue", "Brown", "Green", "Yellow", "Red", "Purple", "Pink"], Bummer:["Orange", "Mustard", "Olive", "Blue", "Grey", "Grey2", "Green"], Roadie:["Blue", "Pink", "Purple", "Red"], Cop:[""]};
pedData = {Clown:{S:15, M:1.1}, Male_Afro:{S:12, M:1.5}, Male_MiddleAged:{S:12, M:1}, Female_Old1:{S:10, M:2}, Female_Old2:{S:9, M:2}, Male_Business:{S:30, M:1.1}, Male_Greaser:{S:10, M:1.25}, Male_Old:{S:6, M:1}, Female_Biz:{S:14, M:1.1}, Female_Cheer:{S:12, M:1.1}, Female_Reg1:{S:13, M:1.2}, Female_Rich:{S:11, M:1.1}, Male_Rich:{S:12, M:1.4}, Male_Mob:{S:15, M:2}, HotDog:{S:13, M:1.3}, Robber:{S:9, M:1.2}, Mime:{S:0, M:1.5}};
hoodPeds = {Midtown:[["Male_Afro", [2]], ["Male_MiddleAged", [1, 2]], ["Female_Old1", [2, 3]], ["Male_Business", [3]], ["Male_Greaser", [1]], ["Male_Old", [1, 2]], ["Female_Biz", [3]], ["Female_Reg1", [1]]], Hipstoria:[["Male_Afro", [1, 2, 3]], ["Male_MiddleAged", [2, 3]], ["Female_Old1", [1, 2]], ["Female_Old2", [2]], ["Male_Greaser", [1, 2, 3]], ["Male_Old", [2, 3]], ["Female_Cheer", [1, 3]], ["Female_Reg1", [1]]], Uptown:[["Male_Afro", [2, 3]], ["Male_MiddleAged", [1, 2, 3]], ["Male_MiddleAged", [1, 2, 3]], ["Female_Old1", [1, 3]], ["Female_Old2", [2, 3]], ["Male_Business", [1, 2, 3]], ["Male_Business", [1, 2, 3]], ["Male_Old", [1, 2, 3, 4]], ["Female_Biz", [1, 3]], ["Female_Reg1", [1]], ["Female_Rich", [1]], ["Male_Rich", [1, 2]], ["Male_Mob", [1]]], Zappa_Park:[["Male_Afro", [1, 2, 3]], ["Male_MiddleAged", [1, 2, 3]], ["Female_Old1", [1, 2, 3]], ["Female_Old2", [1, 2, 3]], ["Male_Old", [1, 2, 3, 4]], ["Female_Cheer", [2]], ["Female_Reg1", [1]]], Yippie:[["Male_Afro", [1, 2, 3]], ["Male_MiddleAged", [1, 3]], ["Female_Old1", [1, 2, 3]], ["Female_Old2", [1, 3]], ["Male_Business", [2, 3]], ["Male_Greaser", [1, 2]], ["Male_Old", [3, 4]], ["Female_Reg1", [1]], ["Male_Mob", [1]]], Cashola:[["Male_Afro", [1, 2]], ["Male_MiddleAged", [1, 2, 3]], ["Female_Old1", [1, 2, 3]], ["Male_Old", [2, 4]], ["Female_Biz", [2]], ["Female_Cheer", [1, 2, 3]], ["Female_Rich", [1, 2, 3]], ["Male_Rich", [1, 2, 3]], ["Male_Mob", [1]]]};
chances = {Midtown:[0.03, 12, 12, 0.02], Hipstoria:[0.03, 14, 9, 0.02], Uptown:[0.04, 20, 13, 0.03], Zappa_Park:[0.015, 10, 8, 0.01], Yippie:[0.03, 15, 10, 0.05], Cashola:[0.025, 13, 8, 0.01]};
delUnique = {Midtown:["Sal", "Biff", "Fred", "Billy", "Giblet", "Oliver", "End"], Hipstoria:["Wendy", "Joey", "Phil", "Agnes", "Hector", "Sally", "Leroy", "Annie"], Uptown:["Lance", "Henry", "Fidanka", "Ed", "Peterson", "Deon", "Edna", "Jack"], Zappa_Park:["Ralph"], Yippie:["Mo", "Flip", "Todd", "Ray", "Raimy", "Earl", "Charlie", "Dale"], Cashola:["Willie", "Blix", "Skip", "Eddie", "Susan", "Marvin", "Vito", "Hitop", "Candi"]};
delCommon = {Midtown:["Olga", "Marlin", "William", "Logan", "Tom", "Ducky", "Squid", "Gary", "Laura", "Mildred"], Hipstoria:["Thad", "Diana", "Sean", "Matt", "Suzanne", "Dan", "Wally", "Carmen", "Rex"], Uptown:["Jake", "Paul", "Mandy", "Dave", "Missy", "Mick", "Judy", "Rob", "XL3000"], Zappa_Park:["Bill", "Frank"], Yippie:["Vicky", "Belinda", "Gus", "Kenny", "Orville", "Moses", "Rosemary", "Rock", "Shaun"], Cashola:["Ruby", "Dahlia", "Steven", "Robin", "Tiffany", "Pookie", "Lizzie", "Miguel"]};
hoodRanges = [0, 0, 1, 1, 2, 3, 4, 5, 5, 5, 5];
delHoods = ["Midtown", "Uptown", "Hipstoria", "Zappa_Park", "Yippie", "Cashola"];
pizzaLvls = [0, 10, 20, 40, 70, 110, 150, 200, 275, 350, 500, "-"];
ranks = ["Trainee", "Rookie", "Fresh Meat", "Cheesemonger", "Pie Driver", "Sausagesmith", "Pepperoni Pro", "Crust King", "Mozzarella Master", "Pizza Legend", "Lord of Deliveries"];
clownLevels = [[1], [1], [1, 2], [1, 2], [1, 2, 3], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]];
mods = {copsnrobbers:false, clownxplosion:false, targetpractice:false, crazydrivers:false, toomuchcoffee:false, thegetaway:false, easydriver:false, bouncytown:false, deepfreeze:false, overpopulation:false};
super();
kong = _arg1;
}
function pedHit(){
audio.playFX("ped", 0.8);
pedsKilled++;
var _local1:int = (100 * pedsKilled);
if (_local1 > 1000){
_local1 = 1000;
};
addScore(-(_local1));
interF.alert((("Penalty: " + _local1) + " pts"));
if (pedsKilled == 5){
interF.alert("The cops are not pleased...", null, true);
copAlert(2);
} else {
if (pedsKilled == 10){
interF.alert("Maniac! You must be stopped!", null, true);
copAlert(3);
} else {
if (pedsKilled > 1){
copAlert(1);
};
};
};
}
function clearDebug(){
interF.debug.text = "";
}
public function switchCar(_arg1, _arg2, _arg3:Boolean=false){
var _local4:Object = carTypes[_arg1];
var _local5:* = 0;
var _local6:* = new b2Vec2(((START_X * 54) / 20), ((START_Y * 54) / 20));
if (car != null){
removeActionItem(car.graphic);
if (currentCar){
_local5 = currentCar.body.GetAngle();
_local6 = currentCar.body.GetPosition();
currentCar.destroy = true;
currentCar = null;
} else {
if (!_arg3){
_local5 = car.body.GetAngle();
_local6 = car.body.GetPosition();
};
};
world.DestroyBody(car.body);
};
pCar = [_arg1, _arg2];
car = new Vehicle("CAR", _arg1, _arg2, carFactory((_arg1 + _arg2)), _local4.speed, _local4.mass, (_local4.accel * (mods.crazydrivers) ? 2 : (retired) ? 1.5 : 1), _local4.defense, _local4.gasMax, _local4.gasRate, mods.deepfreeze);
addActionItem(car.graphic);
car.body = createMovingBox(car, [{X:_local6.x, Y:_local6.y, A:_local5, L:_local4.l, W:_local4.w, F:1, M:_local4.mass, D:1, R:0.5, I:10, S:false}]);
}
function doAct(_arg1){
var _local3:String;
var _local4:Array;
var _local5:Array;
var _local2:Object = interScript[("act" + _arg1)];
interF.startTalkScript(_local2.talkScript);
for each (_local3 in _local2.actions) {
_local4 = _local3.split("_");
switch (_local4[0]){
case "add":
inv.addTo(_local4[1]);
pizzaBoy.item2.gotoAndStop(_local4[1]);
break;
case "remove":
inv.removeFrom(_local4[1]);
pizzaBoy.item.gotoAndStop(_local4[1]);
break;
case "choice":
interF.initChoice();
break;
case "taskDone":
_local5 = _local4[1].split("#");
chars[_local5[0]].tasks.splice(chars[_local5[0]].tasks.indexOf(Number(_local5[1])), 1);
break;
};
};
}
function createMailbox(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Object):void{
var _local5:* = new Mover("MLB_5", _arg1, new Mailbox(), 0.97, _arg4, this);
_local5.extraVars.hit = 0;
_local5.graphic.gotoAndStop((_arg1 + "1"));
addActionItem(_local5.graphic);
_local5.body = createMovingBox(_local5, [{X:_arg2, Y:_arg3, A:0, L:1, W:1, F:1, M:10, D:1, R:0.75, I:10, S:false}]);
misc.push(_local5);
_local5 = null;
}
function inRange2(_arg1:int, _arg2:int, _arg3:int, _arg4:int):Boolean{
var _local6:Number;
var _local5:Number = (_arg3 - stx);
if (_local5 < _arg1){
if (_local5 > -(_arg1)){
_local6 = (sty - _arg4);
if (_local6 < _arg2){
if (_local6 > -(_arg2)){
return (true);
};
};
};
};
return (false);
}
function initLot(){
car.control = false;
pizzaBoyTravel(carX, carY, carX, (carY + 3), "LOT");
}
function rand(_arg1:int, _arg2:int):int{
return ((Math.round((Math.random() * (_arg2 - _arg1))) + _arg1));
}
function getTotalPizzas(){
var _local2:Object;
var _local1:int;
for each (_local2 in pizzas) {
_local1 = (_local1 + _local2.num);
};
return (_local1);
}
function startINT(_arg1){
car.control = false;
if (_arg1 == "Pizza"){
enterPizzeria(false);
return;
};
if (_arg1 == "Wendy"){
audio.playMS("LT");
};
var _local2:Array = tilePos[_arg1];
if (isCommon(_arg1)){
currentTile = new Commons();
currentTile.gotoAndStop(_arg1);
addActionItem(currentTile);
currentTile.x = (tilePos[_arg1][0] * 54);
currentTile.y = (tilePos[_arg1][1] * 54);
} else {
currentTile = map[_local2[0]][_local2[1]][(_local2[2] - 1)][1];
currentTile.char.gotoAndPlay("appear");
};
pizzaBoyTravel(carX, carY, (_local2[0] + _local2[3]), (_local2[1] + _local2[4]), ("INT_" + _arg1));
audio.playFX("inter", 1);
}
function addAct(_arg1, _arg2:Array, _arg3:Array, ... _args){
interScript[_arg1] = {};
var _local5:Object = interScript[_arg1];
_local5.talkScript = _arg2;
_local5.actions = _arg3;
if (_args.length > 0){
_local5.choice = true;
addAct((_arg1 + "YES"), _args[0][0], _args[0][1]);
addAct((_arg1 + "NO"), _args[1][0], _args[1][1]);
} else {
_local5.choice = false;
};
}
function addITM(_arg1){
inv.addTo(_arg1);
}
public function masterFunc(_arg1:b2Body, _arg2, _arg3){
var _local5:int;
var _local6:Boolean;
var _local7:String;
var _local8:String;
var _local9:Pedestrian;
var _local10:String;
var _local11:int;
var _local12:Mover;
var _local13:Mover;
var _local14:Mover;
var _local15:*;
var _local4:Array = _arg2.split("_");
_local7 = _local4[1];
switch (_local4[0]){
case "WAT":
car.water = true;
break;
case "POLICE":
for each (_local15 in traffic) {
if ((_local15 is Police)){
if (_local15.chasing){
_local15.endChase();
audio.stopSiren();
};
};
};
_arg1.GetUserData().makeBust();
busted();
break;
case "CHAR":
_local8 = _local7;
if (_local8 != "Sal"){
} else {
interF.alert("Sal is INDESTRUCTABLE", null);
};
break;
case "PEDESTRIAN":
_local9 = _arg1.GetUserData();
if (_local9.tumbleC > 0){
break;
};
if (car.speed <= 10){
_local9.startRun();
} else {
switch (_local9.type){
case "Clown":
_local9.dead = true;
addScore((_local9.variation * 500));
interF.alert((("Clown Bonus: " + (_local9.variation * 500)) + " pts"), null);
clownsHit++;
if ((clownsHit % 5) == 0){
interF.alert("The Anti-Clown League has awarded you $50!");
addMoney(50);
};
kong.stats.submit("Clowns", clownsHit);
break;
case "Robber":
_local9.dead = true;
addScore(2000);
interF.alert("Robber Bonus: 2000", null);
robbersHit++;
if ((robbersHit % 5) == 0){
interF.alert("$100 vigilante bonus!");
addMoney(100);
};
kong.stats.submit("Robbers", robbersHit);
break;
case "Mime":
_local9.dead = true;
addScore(500);
interF.alert("Mime Bonus: 500", null);
mimesHit++;
if ((mimesHit % 5) == 0){
interF.alert("25$ city reward for mime cleanup...");
addMoney(25);
};
kong.stats.submit("Mimes", mimesHit);
break;
default:
pedHit();
if (car.speed < (mods.bouncytown) ? 100 : 20){
_local9.tumble(car.angle, car.impact);
} else {
_local9.dead = true;
};
if (_local9.type == "HotDog"){
addScore(-2000);
interF.alert("You ran over Mr. Hotdog! Penalty: 2000", null);
};
break;
};
};
break;
case "ITM":
_local10 = _local7;
addITM(((_local10 == "Money")) ? "$20" : _local10);
world.DestroyBody(_arg1);
_arg3.alpha = 0;
switch (_local10){
case "Money":
interF.alert("<font color='#FF0000'>You found</font> 20 Dollars", null);
money.push([getTile((_arg1.GetWorldCenter().x - 1)), getTile((_arg1.GetWorldCenter().y - 1))]);
audio.playFX("money", 1);
break;
case "Nitro":
interF.alert("NITRO!", null);
nitros.push([getTile((_arg1.GetWorldCenter().x - 1)), getTile((_arg1.GetWorldCenter().y - 1)), 0]);
audio.playFX("nitro", 1);
break;
default:
interF.alert(("<font color='#FF0000'>You picked up a </font>" + _local10), "1", true);
removed.push(_local7);
audio.playFX("item", 1);
};
break;
case "GAS":
_local11 = addGAS(_local7);
interF.alert((((("<font color='#FF0000'>Cost: $" + _local11) + "... ") + ["And the dinos gently weep...", "Oil dependency reinforced"][rand(0, 1)]) + "</font>"), null);
audio.playFX("gas", 1);
gasAlert = false;
break;
case "INT":
if (((!(isDead(_local7))) && (!(chasing)))){
startINT(_local7);
};
break;
case "HYD":
damageCar(_arg1, 5);
_local12 = _arg1.GetUserData();
createWater(_local12);
break;
case "MLB":
damageCar(_arg1, 5);
_local13 = _arg1.GetUserData();
createMail(_local13, car.speed);
break;
case "GRB":
audio.playFX("hit", translate(car.speed, 0, 30, 0.2, 1));
_local14 = _arg1.GetUserData();
createGarb(_local14, car.speed);
break;
case "DAM":
damageCar(_arg1, Number(_local7));
break;
case "LOT":
if (currentPlayerCars.length > 0){
initLot();
};
break;
case "TRAFFIC":
if (!checkDamage(_arg1)){
shakeC = (car.impact / 2);
audio.playFX("hit", translate((car.impact / 2), 0, 30, 0.2, 1));
_local5 = Math.ceil(((-1 * (car.impact / 5)) * car.defense));
_local6 = adjustPizzaQuality(_local5);
if (((_local6) && (!((_local5 == 0))))){
interF.alert(("<font color='#FF0000'>Pizza Damage: " + (-1 * _local5)), null);
};
};
break;
case "PARKEDCAR":
if (!checkDamage(_arg1)){
shakeC = (car.impact / 2);
audio.playFX("hit", translate((car.impact / 2), 0, 30, 0.2, 1));
_local5 = Math.ceil(((-1 * (car.impact / 4)) * car.defense));
_local6 = adjustPizzaQuality(_local5);
if (((_local6) && (!((_local5 == 0))))){
interF.alert(("<font color='#FF0000'>Pizza Damage: " + (-1 * _local5)), null);
};
};
break;
};
if (_arg3 != null){
if (_arg3.clip != null){
if (_arg3.clip.currentFrame == 1){
_arg3.clip.play();
};
};
};
_arg1 = null;
_arg3 = null;
}
function hideHud(){
if (hud){
interF.hud.visible = false;
};
}
function pizzaBoyTravel(_arg1, _arg2, _arg3:int, _arg4:int, _arg5:String){
var _local6:* = _arg5.split("_");
var _local7:String = ((_local6.length)>1) ? _local6[1] : "x";
if ((((_local6[0] == "INT")) || ((_local6[0] == "LOT")))){
pizzaBoy = new PizzaBoy(this);
addActionItem(pizzaBoy);
};
if (pizzaBoy.item){
pizzaBoy.item.gotoAndStop(1);
pizzaBoy.item2.gotoAndStop(1);
};
pizzaBoy.rx = (_arg3 * 54);
if ((((_local6[0] == "INT")) || ((_local6[0] == "LOT")))){
pizzaBoy.sx = _arg1;
pizzaBoy.sy = _arg2;
};
pizzaBoy.x = (_arg1 * 54);
pizzaBoy.y = (_arg2 * 54);
pizzaBoy.ex = ((_arg3 * 54) - 20);
pizzaBoy.ey = ((_arg4 * 54) - 10);
pizzaBoy.dir = " ";
pizzaBoy.oDir = "";
pizzaBoy.facing = (tilePos[_local7]) ? tilePos[_local7][5] : "";
pizzaBoy.endFunc = _arg5;
pizzaBoy.done = false;
pizzaBoy.pizzaNum = (pizzas[_local7]) ? pizzas[_local7].num : 0;
}
function interYes(){
doAct((cAct + "YES"));
}
function getCharName(_arg1, _arg2){
var _local3:*;
for (_local3 in tilePos) {
if (tilePos[_local3][0] == _arg1){
if (tilePos[_local3][1] == _arg2){
return (_local3);
};
};
};
return (null);
}
function resumeControl(){
car.control = true;
stage.focus = this;
}
public function adjustPizzaQuality(_arg1){
var _local3:*;
var _local4:Object;
if (((((((newGame) && (!(firstHit)))) && (!(interF.tonyAlert.visible)))) && (!((ngc == 0))))){
firstHit = true;
interF.tonyTalk("If you hit cars or buildings while delivering pizzas, your pizza quality will decrease, meaning lower tips! Deliver too many bad pizzas and I'll have to fire you...");
};
var _local2:Boolean;
for (_local3 in pizzas) {
_local4 = pizzas[_local3];
pizzas[_local3].qual = (_local4.qual + _arg1);
if (_local4.qual < 0){
_local4.qual = 0;
interF.alert((_local3 + "'s order has been ruined!"), null, true);
adjJobSec(Math.floor((_local4.num / 2)));
cancelDelivery(_local3);
if (isCommon(_local3)){
removeHotSpot(_local3);
};
} else {
_local2 = true;
};
};
return (_local2);
}
public function cancelDelivery(_arg1){
if (pizzas[_arg1].dot){
interF.hud.radar.removeChild(pizzas[_arg1].dot);
delete pizzas[_arg1].dot;
};
delete pizzas[_arg1];
delANum--;
}
public function getRank(_arg1:int=0){
return (ranks[((_arg1 > 0)) ? savedGame.data[("level" + _arg1)] : level]);
}
function addMoney(_arg1){
inv.money = (inv.money + _arg1);
if (inv.money < 0){
inv.money = 0;
};
interF.hud.money.text = String(inv.money);
}
public function rand2(_arg1:Number, _arg2:Number):Number{
return ((Math.round((((Math.random() * (_arg2 - _arg1)) + _arg1) * 1000)) / 1000));
}
function isDead(_arg1){
return (!((killedChars.indexOf(_arg1) == -1)));
}
function nextAct(){
var _local1:Mover;
cAct++;
if (interScript[("act" + cAct)] == null){
audio.musicVol(1);
if (currentCarSale.length > 0){
for each (_local1 in currentCarSale) {
_local1.extraVars.cb.removeEventListener(MouseEvent.ROLL_OVER, selectCar);
_local1.extraVars.cb.removeEventListener(MouseEvent.CLICK, buyCar2);
};
};
if (!currentCar){
pizzaBoyTravel((pizzaBoy.x / 54), (pizzaBoy.y / 54), pizzaBoy.sx, pizzaBoy.sy, "returnToCar");
};
if ((currentTile is Commons)){
removeHotSpot(currentTile.currentLabel);
removeActionItem(currentTile);
} else {
if (currentWho == "Wendy"){
audio.playMS("HP");
};
switchHotSpot(currentWho);
currentTile.char.gotoAndStop(1);
};
currentTile = null;
audio.musicVol(1);
updateCap();
interF.goto("Game");
if ((((inv.money > 250)) && (firstMoney))){
firstMoney = false;
interF.tonyTalk("Looks like you have enough cash to get a new car! Sal's autos is a little south of the Pizzeria... see what he can do for you!");
} else {
if (firstPoor){
firstPoor = false;
interF.tonyTalk("If you keep delivering beat up pizzas to my customers, I'm gonna have to let you go...");
} else {
checkLvl();
};
};
if (newGame){
newGame = false;
ngc = 2;
interF.tonyTalk("Great job! Those are the basics, kid. Now drive towards the <font color='#3ECC3E'>CIRCLE T ICON</font> on the radar to get back to the pizzeria and take some more orders!");
};
} else {
doAct(cAct);
};
}
function showHud(){
if (hud){
interF.hud.visible = true;
};
}
public function keyReleased(_arg1){
if (_arg1 == 86){
toggleMute();
};
if (carBuying){
if ((((_arg1 == Keyboard.SPACE)) || ((_arg1 == Keyboard.ESCAPE)))){
currentCar = null;
leaveSal();
};
if ((((_arg1 == Keyboard.LEFT)) || ((_arg1 == 68)))){
nextCar(-1, 0, true);
};
if ((((_arg1 == Keyboard.RIGHT)) || ((_arg1 == 65)))){
nextCar(1, 0, true);
};
if ((((_arg1 == Keyboard.UP)) || ((_arg1 == 87)))){
nextCar(-1, 0, true);
};
if ((((_arg1 == Keyboard.DOWN)) || ((_arg1 == 83)))){
nextCar(1, 0, true);
};
if (_arg1 == Keyboard.ENTER){
buyCar();
};
} else {
if (interF.currentLabel == "Pizzeria"){
if ((((_arg1 == 83)) && ((interF.saveClip.currentFrame < 50)))){
saveGame();
audio.playFX("gas", 1);
interF.saveClip.gotoAndPlay("saved");
};
if (_arg1 == Keyboard.RIGHT){
interF.keyPressed("R");
};
if (_arg1 == Keyboard.LEFT){
interF.keyPressed("L");
};
if (_arg1 == Keyboard.UP){
interF.keyPressed("U");
};
if (_arg1 == Keyboard.DOWN){
interF.keyPressed("D");
};
if (_arg1 == Keyboard.ENTER){
interF.keyPressed("E");
};
if ((((_arg1 == Keyboard.SPACE)) || ((_arg1 == Keyboard.ESCAPE)))){
interF.keyPressed("S");
};
} else {
if (interF.currentLabel == "Title"){
if ((((interF.interX.currentLabel == "Options")) && ((_arg1 == Keyboard.ENTER)))){
interF.processPassword();
};
} else {
if (!currentCar){
if (_arg1 == 82){
if (interF.currentLabel == "Pause"){
restart();
pauseGame();
};
if (interF.currentLabel == "Fired"){
restart();
startLooper();
};
};
if (_arg1 == Keyboard.ESCAPE){
if (interF.currentLabel == "Pause"){
pauseGame();
};
if (interF.currentLabel == "Map"){
showMap();
};
};
if ((((((interF.currentLabel == "Game")) || ((interF.currentLabel == "Pause")))) || ((interF.currentLabel == "Map")))){
if (_arg1 == Keyboard.TAB){
toggleHud();
};
if (_arg1 == Keyboard.SPACE){
pauseGame();
};
if (_arg1 == 77){
showMap();
};
if (_arg1 == 89){
interF.yesKey();
};
if (_arg1 == 78){
interF.noKey();
};
};
if (interF.currentLabel == "Talk"){
interF.enterKey();
};
};
};
};
};
}
function createMail(_arg1:Mover, _arg2:Number){
var _local4:Bit;
_arg1.graphic.gotoAndStop((_arg1.type + "2"));
var _local3:int = ((5 - _arg1.extraVars.hit) * _arg2);
var _local5 = 1;
while (_local5 < 10) {
if (rand(0, _local3) > 33){
_local4 = new Bit(new Mail(), 0.95, (_arg1.graphic.x + rand(-6, 6)), (_arg1.graphic.y + rand(-6, 6)));
_local4.graphic.gotoAndStop(rand(1, 10));
layers[1].addChild(_local4.graphic);
bits.push(_local4);
};
_local5++;
};
_local4 = null;
_arg1.extraVars.hit++;
}
function restartVars(){
var _local2:MapData;
var _local3:Compress;
var _local4:int;
var _local5:int;
var _local6:int;
frame = 0;
rest = false;
oChasing = false;
closeCPS = new Array();
traffic = [];
pedestrians = new Array();
copLocs = new Array();
skulls = [];
misc = [];
bits = [];
actionItems = [];
removed = [];
killedChars = [];
currentCarSale = [];
currentPlayerCars = [];
damageHistory = [];
activeChars = [];
delChars = [];
nitros = [];
money = [];
inv = new Inventory(this);
var _local1:* = new Chars();
chars = _local1.chars;
carBuying = false;
carSelecting = false;
playerCars = [["Goblin", "Blue"]];
carsForSale = ["Colt", "Wagon", "Bug", "Jeep", "Spunk", "Bummer"];
pCar = ["Goblin", "Blue"];
pizzas = {};
pizzaQ = {};
delANum = 0;
delQNum = 0;
del_good = 0;
del_med = 0;
del_poor = 0;
delTotal = 0;
firedAt = 6;
busts = 0;
level = 0;
score = 0;
pedsKilled = 0;
chasing = false;
forceCop = 0;
gasAlert = false;
firstMoney = true;
firstPoor = false;
firstHit = false;
ngc = 0;
clearMap();
if (firstRun){
_local2 = new MapData();
_local3 = new Compress();
loadMap(_local3.uncompress(_local2.txt));
firstRun = false;
} else {
_local4 = 0;
while (_local4 < map.length) {
_local5 = 0;
while (_local5 < map[0].length) {
_local6 = 0;
while (_local6 < 6) {
if (map[_local4][_local5][_local6]){
map[_local4][_local5][_local6][1] = null;
map[_local4][_local5][_local6][2] = null;
};
_local6++;
};
_local5++;
};
_local4++;
};
};
clownsHit = 0;
mimesHit = 0;
robbersHit = 0;
roadie = false;
copCar = false;
retired = false;
screen.x = ((START_X * -54) + (SCREEN_WIDTH / 2));
screen.y = ((START_Y * -54) + (SCREEN_HEIGHT / 2));
}
public function getQuality(_arg1){
if (_arg1 < 40){
return ("poor");
};
if (_arg1 < 70){
return ("med");
};
return ("good");
}
function addSpeech(_arg1, _arg2){
interF.talkScript.push(["CLR", ""]);
interF.talkScript.push([_arg1, _arg2]);
interF.nextTalkScriptAction();
}
public function reverseDelivery(_arg1, _arg2){
cancelDelivery(_arg1);
addToPizzaQ(_arg1, _arg2);
}
function removeCopLoc(_arg1:CopLoc){
layers[6].removeChild(_arg1);
}
private function stopLooper(){
removeEventListener(Event.ENTER_FRAME, gameLoop);
}
public function createCircle(_arg1:String, _arg2:Array, _arg3:Boolean, _arg4:MovieClip){
var _local5:GameObject = (_arg3) ? new Sensor(_arg1, false) : new GameObject(_arg1);
bodyDef.position.Set(_arg2[0], _arg2[1]);
bodyDef.userData = _local5;
circleDef.isSensor = _arg3;
if (mods.bouncytown){
circleDef.restitution = 2;
};
circleDef.radius = _arg2[2];
var _local6:b2Body = world.CreateBody(bodyDef);
_local6.CreateShape(circleDef);
_local5.body = _local6;
if (_arg4 != null){
_local5.tile = _arg4;
};
return (_local6);
}
function createMovingBox(_arg1:Object, _arg2:Array){
var _local8:Object;
var _local9:b2MassData;
var _local3:Object = _arg2[0];
var _local4:b2BodyDef = new b2BodyDef();
_local4.userData = _arg1;
_local4.position.Set(0, 0);
var _local5:b2PolygonDef = new b2PolygonDef();
var _local6:b2Body = world.CreateBody(_local4);
_local5.friction = _local3.F;
_local5.density = _local3.D;
_local5.restitution = (mods.bouncytown) ? 2 : _local3.R;
_local5.isSensor = _local3.S;
_local5.SetAsBox(_local3.L, _local3.W);
_local6.CreateShape(_local5);
var _local7 = 1;
while (_local7 < _arg2.length) {
_local8 = _arg2[_local7];
if (_local8.S){
_local5.SetAsOrientedBox(_local8.L, _local8.W, new b2Vec2(_local8.X, _local8.Y), _local8.A);
_local5.isSensor = true;
_local6.CreateShape(_local5);
};
_local7++;
};
if (_local3.D != 0){
_local9 = new b2MassData();
_local9.center.SetZero();
_local9.I = _local3.I;
_local9.mass = _local3.M;
_local6.SetMass(_local9);
};
_local6.SetXForm(new b2Vec2(_local3.X, _local3.Y), _local3.A);
_local6.AllowSleeping(true);
return (_local6);
}
function pedFactory(_arg1){
switch (_arg1){
case "Clown":
return (new Clown());
case "Male_Afro":
return (new Male_Afro());
case "Male_Greaser":
return (new Male_Greaser());
case "Male_MiddleAged":
return (new Male_MiddleAged());
case "Male_Business":
return (new Male_Business());
case "Male_Old":
return (new Male_Old());
case "Female_Old1":
return (new Female_Old1());
case "Female_Old2":
return (new Female_Old2());
case "Female_Biz":
return (new Female_Biz());
case "Female_Cheer":
return (new Female_Cheer());
case "Female_Reg1":
return (new Female_Reg1());
case "Female_Rich":
return (new Female_Rich());
case "Male_Rich":
return (new Male_Rich());
case "Male_Mob":
return (new Male_Mob());
case "HotDog":
return (new HotDog());
case "Robber":
return (new Robber());
case "Mime":
return (new Mime());
};
}
function toggleHud(){
hud = !(hud);
interF.hud.visible = hud;
}
function getDelName(_arg1, _arg2){
var _local3:*;
for (_local3 in tilePos) {
if (tilePos[_local3][6] == _arg1){
if (tilePos[_local3][7] == _arg2){
return (_local3);
};
};
};
return (null);
}
function pizzaBoyFunc(_arg1){
var _local2:Array = _arg1.split("_");
switch (_local2[0]){
case "INT":
pizzaBoy.x = pizzaBoy.ex;
pizzaBoy.y = pizzaBoy.ey;
pizzaBoy.done = true;
if (pizzaBoy.pizzaNum != 0){
pizzaBoy.gotoAndPlay(("G" + pizzaBoy.facing));
} else {
pizzaBoy.gotoAndStop(("T" + pizzaBoy.facing));
};
interact(_local2[1]);
break;
case "returnToCar":
removeActionItem(pizzaBoy);
pizzaBoy = null;
updateCap();
resumeControl();
break;
case "newCar":
removeActionItem(pizzaBoy);
pizzaBoy = null;
resumeControl();
switchCar(currentCar.type, currentCar.extraVars.color);
updateCap();
break;
case "LOT":
pizzaBoy.done = true;
pizzaBoy.gotoAndPlay("choose");
carSelecting = true;
carSelect = new CarSelect2();
layers[5].addChild(carSelect);
updateCarStats(currentPlayerCars[0], false);
break;
};
}
public function init(_arg1:String):void{
var _local5:Array;
var _local6:b2DebugDraw;
stage.quality = StageQuality.LOW;
stage.frameRate = FPS;
this.focusRect = false;
domainSTR = _arg1;
savedGame = SharedObject.getLocal("pizzaSave", "/");
if ((((((savedGame.data.score1 == undefined)) && ((savedGame.data.score2 == undefined)))) && ((savedGame.data.score3 == undefined)))){
saveNum = 0;
} else {
saveNum = 1;
};
if (savedGame.data.score){
convertOldSave();
};
musicVolume = ((savedGame.data.musicVolume)!=undefined) ? savedGame.data.musicVolume : 2;
sfxVolume = ((savedGame.data.sfxVolume)!=undefined) ? savedGame.data.sfxVolume : 2;
audio = new Audio(this);
screen = new Sprite();
addChild(screen);
input = new Input(this);
var _local2:b2AABB = new b2AABB();
_local2.lowerBound.Set(-2000, -2000);
_local2.upperBound.Set(2000, 2000);
world = new b2World(_local2, new b2Vec2(0, 0), true);
if (debugDraw){
debugLayer = new Sprite();
screen.addChild(debugLayer);
_local6 = new b2DebugDraw();
_local6.m_sprite = debugLayer;
_local6.m_drawScale = DRAW_SCALE;
_local6.m_fillAlpha = 0.1;
_local6.m_lineThickness = 2;
_local6.m_drawFlags = 1;
world.SetDebugDraw(_local6);
};
bodyDef = new b2BodyDef();
boxDef = new b2PolygonDef();
polyDef = new b2PolygonDef();
circleDef = new b2CircleDef();
contactListener = new ContactListener();
world.SetContactListener(contactListener);
var _local3:TileData = new TileData();
tileShapes = _local3.shapes;
tilePos = _local3.pos;
tileFill = _local3.fillers;
tileGround = _local3.ground;
actionLayer = new Sprite();
layers = new Array(NUM_LAYERS);
var _local4:* = 0;
while (_local4 < NUM_LAYERS) {
if (_local4 == CAR_LAYER){
screen.addChild(actionLayer);
};
layers[_local4] = new Sprite();
screen.addChild(layers[_local4]);
_local4++;
};
interF = new Interface(this);
addChild(interF);
radarData = {tony:[186, 216, new TonyDot()], gas1:[195, 97, new GasDot()], gas2:[346, 56, new GasDot()], gas3:[363, 268, new GasDot()], gas4:[244, 232, new GasDot()], gas5:[69, 277, new GasDot()]};
for each (_local5 in radarData) {
interF.hud.radar.addChild(_local5[2]);
};
savedTasks = {};
interF.gotoAndStop("Title");
}
function updateCarStats(_arg1:Mover, _arg2:Boolean){
carSelect.x = (_arg1.body.GetWorldCenter().x * 20);
carSelect.y = ((_arg1.body.GetWorldCenter().y * 20) - 35);
if (_arg2){
carSelect.cost.text = _arg1.extraVars.cost;
} else {
carSelect.nam.text = _arg1.type;
};
carSelect.cap.text = _arg1.extraVars.cap;
carSelect.speed.gotoAndStop(Math.round(translate(_arg1.extraVars.speed, 15, carTypes.Max.speed, 0, 100)));
carSelect.safety.gotoAndStop(Math.round(translate(_arg1.extraVars.defense, carTypes.Max.defense, 1, 100, 0)));
carSelect.gas.gotoAndStop(Math.round(((_arg1.extraVars.gasMax / carTypes.Max.gasMax) * 100)));
carSelect.rate.gotoAndStop(Math.round((105 - (_arg1.extraVars.gasRate * 100000))));
currentCar = _arg1;
}
function switchHotSpot(_arg1){
var _local2:Object = map[tilePos[_arg1][6]][tilePos[_arg1][7]][(tilePos[_arg1][8] - 1)];
_local2[1].gotoAndStop(151);
}
function showMap(){
if (interF.currentLabel != "Map"){
interF.goto("Map");
hideHud();
stopLooper();
audio.musicVol(0.5);
} else {
interF.cleanMap();
interF.goto("Game");
showHud();
startLooper();
audio.musicVol(1);
};
}
function dupeObject(_arg1:Object){
var _local3:*;
var _local2:Object = {};
for (_local3 in _arg1) {
_local2[String(_local3)] = _arg1[_local3];
};
return (_local2);
}
function updateGameVars(_arg1){
pedChance = chances[_arg1][0];
pedMax = (chances[_arg1][1] - Math.floor(((10 - level) / 3)));
trafficMax = (chances[_arg1][2] - Math.ceil(((10 - level) / 2)));
copChance = chances[_arg1][3];
}
public function acceptDelivery(_arg1, _arg2){
pizzas[_arg1] = {};
pizzas[_arg1].nam = _arg1;
pizzas[_arg1].num = _arg2;
pizzas[_arg1].timer = 0;
pizzas[_arg1].qual = 100;
delete pizzaQ[_arg1];
delQNum--;
delChars.push(_arg1);
delANum++;
pizzas[_arg1].dot = new PizzaDot();
pizzas[_arg1].oldState = "";
interF.hud.radar.addChild(pizzas[_arg1].dot);
}
public function selectCar(_arg1:Event){
if (!currentCar){
return;
};
var _local2:Mover = (_arg1.target.pc as Mover);
updateCarStats(_local2, true);
carSelect.x = (currentCar.body.GetWorldCenter().x * 20);
carSelect.y = ((currentCar.body.GetWorldCenter().y * 20) - 39);
addSpeech("Sal", ((currentCar.extraVars.cost == 0)) ? "Free" : currentCar.type);
audio.playFX("marker", 1);
}
public function loadGame2(){
var _local1:*;
score = savedGame.data.score2;
inv.money = savedGame.data.moneyNum2;
level = savedGame.data.level2;
busts = savedGame.data.busts2;
firedAt = savedGame.data.firedAt2;
delTotal = savedGame.data.delTotal2;
del_poor = savedGame.data.del_poor2;
del_med = savedGame.data.del_med2;
del_good = savedGame.data.del_good2;
firstMoney = savedGame.data.firstMoney2;
firstPoor = savedGame.data.firstPoor2;
roadie = ((savedGame.data.roadie2)==undefined) ? false : savedGame.data.roadie2;
copCar = ((savedGame.data.copCar2)==undefined) ? false : savedGame.data.copCar2;
retired = ((savedGame.data.retired2)==undefined) ? false : savedGame.data.retired2;
clownsHit = savedGame.data.clownsHit2;
mimesHit = savedGame.data.mimesHit2;
robbersHit = savedGame.data.robbersHit2;
money = savedGame.data.money2.slice();
pCar = savedGame.data.pCar2.slice();
carsForSale = savedGame.data.carsForSale2.slice();
removed = savedGame.data.removed2.slice();
inv.inv = dupeObject(savedGame.data.inv2);
savedTasks = dupeObject(savedGame.data.tasks2);
for (_local1 in savedTasks) {
chars[String(_local1)].tasks = savedTasks[_local1].slice();
};
newGame = false;
}
public function loadGame3(){
var _local1:*;
score = savedGame.data.score3;
inv.money = savedGame.data.moneyNum3;
level = savedGame.data.level3;
busts = savedGame.data.busts3;
firedAt = savedGame.data.firedAt3;
delTotal = savedGame.data.delTotal3;
del_poor = savedGame.data.del_poor3;
del_med = savedGame.data.del_med3;
del_good = savedGame.data.del_good3;
firstMoney = savedGame.data.firstMoney3;
firstPoor = savedGame.data.firstPoor3;
roadie = ((savedGame.data.roadie3)==undefined) ? false : savedGame.data.roadie3;
copCar = ((savedGame.data.copCar3)==undefined) ? false : savedGame.data.copCar3;
retired = ((savedGame.data.retired3)==undefined) ? false : savedGame.data.retired3;
clownsHit = savedGame.data.clownsHit3;
mimesHit = savedGame.data.mimesHit3;
robbersHit = savedGame.data.robbersHit3;
money = savedGame.data.money3.slice();
pCar = savedGame.data.pCar3.slice();
carsForSale = savedGame.data.carsForSale3.slice();
removed = savedGame.data.removed3.slice();
inv.inv = dupeObject(savedGame.data.inv3);
savedTasks = dupeObject(savedGame.data.tasks3);
for (_local1 in savedTasks) {
chars[String(_local1)].tasks = savedTasks[_local1].slice();
};
newGame = false;
}
public function startLooper(){
addEventListener(Event.ENTER_FRAME, gameLoop, false, 0, true);
}
public function findClosestCar(_arg1, _arg2){
var _local4:Traffic;
var _local5:Traffic;
var _local6:*;
var _local3:Number = 100000;
for each (_local5 in traffic) {
if ((_local5 is Police)){
} else {
_local6 = (Math.pow((_local5.body.GetWorldCenter().x - _arg1), 2) + Math.pow((_local5.body.GetWorldCenter().y - _arg2), 2));
if (_local6 < _local3){
_local4 = _local5;
_local3 = _local6;
};
};
};
return (_local4);
}
function translate(_arg1, _arg2, _arg3, _arg4, _arg5){
return (((((_arg1 - _arg2) / (_arg3 - _arg2)) * (_arg5 - _arg4)) + _arg4));
}
public function loadGame1(){
var _local1:*;
score = savedGame.data.score1;
inv.money = savedGame.data.moneyNum1;
level = savedGame.data.level1;
busts = savedGame.data.busts1;
firedAt = savedGame.data.firedAt1;
delTotal = savedGame.data.delTotal1;
del_poor = savedGame.data.del_poor1;
del_med = savedGame.data.del_med1;
del_good = savedGame.data.del_good1;
firstMoney = savedGame.data.firstMoney1;
firstPoor = savedGame.data.firstPoor1;
roadie = ((savedGame.data.roadie1)==undefined) ? false : savedGame.data.roadie1;
copCar = ((savedGame.data.copCar1)==undefined) ? false : savedGame.data.copCar1;
retired = ((savedGame.data.retired1)==undefined) ? false : savedGame.data.retired1;
clownsHit = savedGame.data.clownsHit1;
mimesHit = savedGame.data.mimesHit1;
robbersHit = savedGame.data.robbersHit1;
money = savedGame.data.money1.slice();
pCar = savedGame.data.pCar1.slice();
carsForSale = savedGame.data.carsForSale1.slice();
removed = savedGame.data.removed1.slice();
inv.inv = dupeObject(savedGame.data.inv1);
savedTasks = dupeObject(savedGame.data.tasks1);
for (_local1 in savedTasks) {
chars[String(_local1)].tasks = savedTasks[_local1].slice();
};
newGame = false;
}
function endBust(){
switch (busts){
case 1:
interF.tonyTalk("We usually don't hire criminals, so try not to run over any more pedestrians, eh?");
break;
case 3:
interF.tonyTalk("Come on, kid! Stop it with the vehicular homicide, will ya?");
break;
case 5:
interF.tonyTalk("You just cant stop all the killing can you? Well, don't be surprised to find yourself without a job soon...");
break;
};
}
function createWater(_arg1:Mover){
var _local2:Bit;
_arg1.graphic.gotoAndStop((_arg1.type + "2"));
if (_arg1.extraVars.hit == 0){
_local2 = new Bit(new Water(), 0, _arg1.graphic.x, (_arg1.graphic.y - 28));
addActionItem(_local2.graphic);
bits.push(_local2);
};
_arg1.extraVars.hit++;
}
function createTowTruck(_arg1, _arg2, _arg3){
_arg3[1] = "Mover";
var _local4:* = new Mover("DAM_5", "", new TowTruck(), 0.5, _arg3);
_local4.exc = 200;
_local4.ex = true;
addActionItem(_local4.graphic);
_local4.body = createMovingBox(_local4, [{X:_arg1, Y:_arg2, A:0, L:3, W:1, F:1, M:100, D:1, R:0.75, I:0, S:false}]);
misc.push(_local4);
_local4 = null;
}
function busted(){
audio.playEX("ped");
busts++;
pedsKilled = 0;
forceCop = 0;
interF.alert("BUSTED!!! $100 Penalty", null, true);
addMoney(-100);
adjJobSec(Math.ceil((busts / 2)));
lastBust = (frame + 600);
}
public function leaveSal(){
carBuying = false;
interF.nextTalkScriptAction();
layers[5].removeChild(carSelect);
carSelect = null;
interF.endReveal2();
}
public function lowestPizzaNum():int{
var _local2:*;
var _local1 = 100;
for each (_local2 in pizzaQ) {
if (_local2.num < _local1){
_local1 = _local2.num;
};
};
return (_local1);
}
private function gameLoop(_arg1):void{
var trf:*;
var nitro:Array;
var vx:Number;
var vy:Number;
var d:int;
var xa:int;
var ya:int;
var groundType:String;
var radar:*;
var dir:String;
var px:int;
var py:int;
var rx:Number;
var ry:Number;
var pizza:Object;
var dot:Array;
var newHood:String;
var hid:*;
var i:*;
var heading:b2Vec2;
var tl:int;
var ll:int;
var cont:Boolean;
var cc:int;
var pcp:CheckPoint;
var cp:CheckPoint;
var outCP:CheckPoint;
var posP:Point;
var chance:Number;
var contact:*;
var sx:int;
var sy:int;
var ex:int;
var ey:int;
var j:int;
var k:int;
var char:MovieClip;
var damA:Array;
var xx:int;
var yy:int;
var newState:String;
var dotClip:MovieClip;
var hoodSTR:*;
var bounds:Array;
var cpx:*;
var cpy:*;
var carA:Array;
var nm:String;
var col:String;
var isCop:Boolean;
var a:int;
var tr:Traffic;
var tx:Number;
var ty:Number;
var ctx:int;
var cty:int;
var tl2:b2Vec2;
var m:Object;
var mxx:*;
var myy:*;
var vv:b2Vec2;
var b:Object;
var sk:Skull;
var ped:Pedestrian;
var pos:b2Vec2;
var isClown:Boolean;
var EB:int;
var l:int;
var userData:*;
var id3:int;
var flag:Boolean;
var mp:Object;
var tileInfo:*;
var id:int;
var shapeOver:String;
var idOver:String;
var o:int;
var tsd:Array;
var switchSpot:int;
var tsid:int;
var frAdj:int;
var CL:Class;
var tile:*;
var ch:Boolean;
var n:Array;
var mn:Array;
var nam:String;
var nam2:String;
var carType:String;
var forSale:Boolean;
var playerCar:Boolean;
var ang:int;
var carM:Mover;
var shapeInfo:Array;
var e = _arg1;
try {
if (interF.currentLabel == "Game"){
frame++;
};
world.Step(TIME_STEP, ITERATIONS);
chasing = false;
for each (trf in traffic) {
if ((trf is Police)){
if (trf.chasing){
chasing = true;
break;
};
};
};
if (((oChasing) && (!(chasing)))){
audio.stopSiren();
interF.alert("Nice getaway...", null);
};
oChasing = chasing;
for each (nitro in nitros) {
var _local5 = nitro;
var _local6 = 2;
var _local7 = (_local5[_local6] + 1);
_local5[_local6] = _local7;
if (_local5[_local6] > 2000){
nitros.splice(nitros.indexOf(nitro), 1);
};
};
vx = car.body.GetLinearVelocity().x;
vy = car.body.GetLinearVelocity().y;
stx = ((screen.x / -54) + 8);
sty = ((screen.y / -54) + 6);
if (pizzaBoy){
pizzaBoy.behave();
};
d = 0;
while (d < damageHistory.length) {
damA = damageHistory[d];
if ((damA[0] + 30) < frame){
damageHistory.splice(d, 1);
d = (d - 1);
};
d = (d + 1);
};
xa = 0;
ya = 0;
if (car.heading){
xa = (car.heading.x * 20);
ya = (car.heading.y * 20);
};
cx = car.body.GetWorldCenter().x;
cy = car.body.GetWorldCenter().y;
carX = Math.round((((cx * 20) + xa) / 54));
carY = Math.round((((cy * 20) + ya) / 54));
interF.hud.east.text = String((Math.round((carX / 10)) * 100));
interF.hud.south.text = String((Math.round((carY / 10)) * 100));
if (ground[carX][carY]){
car.onStreet = false;
groundType = ground[carX][carY];
if (groundType == "Pavement"){
car.ya = -6;
if (!oldG){
audio.playFX("curb", 0.3);
};
};
} else {
car.onStreet = true;
car.ya = 0;
if (oldG == "Pavement"){
audio.playFX("curb", 0.3);
};
};
car.slow = (groundType == "Grass");
oldG = groundType;
car.diagClose = false;
car.inter = false;
xx = (carX - 10);
while (xx < (carX + 10)) {
yy = (carY - 7);
while (yy < (carY + 7)) {
if (ground[xx][yy] == "Inter"){
car.inter = true;
};
if (Math.abs((carX - xx)) < 6){
if (ground[xx][yy] == "Diag"){
car.diagClose = true;
if (car.inter){
//unresolved jump
};
};
};
yy = (yy + 1);
};
xx = (xx + 1);
};
radar = interF.hud.radar;
radar.map.x = ((0 - carX) + 52);
radar.map.y = ((0 - carY) + 40);
if (car.heading){
if ((((car.heading.x == 0)) && ((car.heading.y == 0)))){
dir = "S";
} else {
if (car.heading.x < 0){
dir = "L";
} else {
if (car.heading.x > 0){
dir = "R";
} else {
dir = ((car.heading.y)>0) ? "D" : "U";
};
};
};
};
radar.carDot.gotoAndStop(dir);
for each (pizza in pizzas) {
px = tilePos[pizza.nam][0];
py = tilePos[pizza.nam][1];
rx = (50 - (carX - px));
ry = ((33 - (carY - py)) + 2);
pizza.dot.x = rx;
pizza.dot.y = ry;
if (ry < 0){
pizza.dot.y = 0;
} else {
if (ry > 66){
pizza.dot.y = 66;
};
};
if (rx < 0){
pizza.dot.x = 0;
} else {
if (rx > 100){
pizza.dot.x = 100;
};
};
rx = (rx - 50);
ry = (ry - 33);
newState = (getQuality(pizza.qual) + Math.ceil((Math.sqrt(((rx * rx) + (ry * ry))) / 60)));
if (pizza.oldState != newState){
pizza.dot.gotoAndPlay(newState);
};
pizza.oldState = newState;
pizza = null;
};
for each (dot in radarData) {
rx = (50 - (carX - dot[0]));
ry = (33 - (carY - dot[1]));
dotClip = dot[2];
dotClip.x = rx;
dotClip.y = ry;
if (ry < 0){
dotClip.y = 0;
} else {
if (ry > 66){
dotClip.y = 66;
};
};
if (rx < 0){
dotClip.x = 0;
} else {
if (rx > 100){
dotClip.x = 100;
};
};
rx = (rx - 50);
ry = (ry - 33);
dotClip.gotoAndStop(Math.ceil((Math.sqrt(((rx * rx) + (ry * ry))) / 60)));
};
radar = null;
newHood = "";
for (hid in hoods) {
hoodSTR = String(hid);
bounds = hoods[hid];
if ((((((((carX >= bounds[0])) && ((carX <= bounds[1])))) && ((carY >= bounds[2])))) && ((carY <= bounds[3])))){
switch (hoodSTR){
case "ZP":
newHood = "Zappa_Park";
break;
case "HP":
newHood = "Hipstoria";
break;
case "UT":
newHood = "Uptown";
break;
case "MT":
newHood = "Midtown";
break;
case "YP":
newHood = "Yippie";
break;
case "CS":
newHood = "Cashola";
break;
};
break;
};
bounds = null;
};
if (newHood != interF.hud.hood.text){
interF.hud.hood.text = process(newHood, "_");
updateGameVars(newHood);
if (hoodSTR != "ZP"){
audio.playMS(hoodSTR);
};
};
hood = newHood;
if (hoodSTR == "ZP"){
audio.parkADJ(carX, carY);
} else {
if ((((carY > 270)) && ((carX < 285)))){
audio.freewayADJ(carX, carY);
};
};
if ((frame % 750) == 0){
adjustPizzaQuality(-1);
};
if (car.speed > 1){
car.gas = (car.gas - car.gasRate);
interF.hud.gas.gotoAndStop((100 - Math.round(((car.gas / car.gasMax) * 100))));
if ((((car.gas < 0)) && (!((interF.currentLabel == "Gas"))))){
outOfGas();
};
if (car.gas < 1.5){
if (!gasAlert){
gasAlert = true;
interF.alert("Gas is Low!", null, true);
};
};
};
i = 1;
while (i <= 8) {
if (input.isPressed((48 + i))){
changeCar(i);
};
i = (i + 1);
};
heading = new b2Vec2(0, 0);
if (((input.isPressed(Keyboard.LEFT)) || (input.isPressed(65)))){
heading.Add(new b2Vec2(-1, 0));
};
if (((input.isPressed(Keyboard.UP)) || (input.isPressed(87)))){
heading.Add(new b2Vec2(0, -1));
};
if (((input.isPressed(Keyboard.RIGHT)) || (input.isPressed(68)))){
heading.Add(new b2Vec2(1, 0));
};
if (((input.isPressed(Keyboard.DOWN)) || (input.isPressed(83)))){
heading.Add(new b2Vec2(0, 1));
};
car.brake = ((input.isPressed(88)) || (input.isPressed(Keyboard.SHIFT)));
car.update(heading, true);
heading = null;
if ((frame % 30) == 1){
for each (pcp in checkPoints) {
if (Math.random() > 0.5){
if (closeCPS.indexOf(pcp) == -1){
if (inRange2(30, 25, pcp.tile.x, pcp.tile.y)){
closeCPS.push(pcp);
};
} else {
if (!inRange2(30, 25, pcp.tile.x, pcp.tile.y)){
closeCPS.splice(closeCPS.indexOf(pcp), 1);
};
};
};
};
};
pcp = null;
chance = (0.05 - (closeCPS.length / 1000));
if (chance < 0.01){
chance = 0.01;
};
tl = traffic.length;
if (lastSecondSpawns < 2){
for each (cp in closeCPS) {
if (tl < trafficMax){
if (Math.random() < chance){
cpx = getTile(cp.center.x);
cpy = getTile(cp.center.y);
posP = new Point(0, 0);
cc = 0;
cont = false;
ll = cp.out.length;
do {
outCP = checkPoints[("p" + cp.out[rand(0, (ll - 1))])];
if (closeCPS.indexOf(outCP) == -1){
if (cp.out.length == 1){
cont = true;
break;
};
cc = (cc + 1);
if (cc < 4){
//unresolved jump
} else {
cont = true;
break;
};
} else {
break;
};
} while (true);
if (cont){
} else {
if (Point.distance(cp.center, outCP.center) > 10){
a = 0;
do {
posP = Point.interpolate(cp.center, outCP.center, Math.random());
a = (a + 1);
} while (!(a > 4));
} else {
continue;
};
if (cont){
} else {
lastSecondSpawns++;
tl = (tl + 1);
carA = randElement(hoodCars[hood]);
nm = carA[0];
do {
col = carColors[nm][randElement(carA[1])];
} while (col == pCar[1]);
isCop = (Math.random() < copChance);
createTrafficCar((isCop) ? "Cop" : nm, (isCop) ? "" : col, posP.x, posP.y, cp);
};
};
};
};
};
};
cp = null;
outCP = null;
posP = null;
if ((frame % 30) == 0){
lastSecondSpawns = 0;
};
tl = traffic.length;
i = 0;
while (i < traffic.length) {
tr = traffic[i];
tx = tr.body.GetWorldCenter().x;
ty = tr.body.GetWorldCenter().y;
ctx = getTile(tx);
cty = getTile(ty);
tr.diagClose = false;
tr.inter = false;
xx = (ctx - 3);
while (xx < (ctx + 3)) {
yy = (cty - 3);
while (yy < (cty + 3)) {
if (ground[xx][yy] == "Inter"){
tr.inter = true;
};
if (ground[xx][yy] == "Diag"){
tr.diagClose = true;
if (tr.inter){
//unresolved jump
};
};
yy = (yy + 1);
};
xx = (xx + 1);
};
tl2 = new b2Vec2((tx - cx), (ty - cy));
if (((tr.destroy) || (((tl2.Length() * 20) > 1500)))){
world.DestroyBody(tr.body);
removeActionItem(tr.graphic);
tr.cleanUp();
traffic.splice(i, 1);
i = (i - 1);
} else {
tr.behave();
};
tr = null;
i = (i + 1);
};
i = 0;
while (i < misc.length) {
m = misc[i];
m.behave();
if (m.ex){
break;
};
mxx = m.body.GetWorldCenter().x;
myy = m.body.GetWorldCenter().y;
vv = new b2Vec2((mxx - cx), (myy - cy));
if (((m.destroy) || (((vv.Length() * 20) > 1500)))){
if (m.extraVars.forSale){
currentCarSale.splice(currentCarSale.indexOf(m), 1);
} else {
if (m.extraVars.player){
currentPlayerCars.splice(currentPlayerCars.indexOf(m), 1);
};
};
world.DestroyBody(m.body);
m.sourceMap[1] = null;
if (m.sourceMap[3]){
m.sourceMap[3] = null;
};
removeActionItem(m.graphic);
m.cleanUp();
misc.splice(i, 1);
i = (i - 1);
};
m = null;
i = (i + 1);
};
i = 0;
while (i < bits.length) {
b = bits[i];
b.behave();
if (b.destroy){
if ((b.graphic is Water)){
removeActionItem(b.graphic);
} else {
layers[1].removeChild(b.graphic);
};
b.cleanUp();
bits.splice(i, 1);
i = (i - 1);
};
b = null;
i = (i + 1);
};
tl = skulls.length;
i = 0;
while (i < skulls.length) {
sk = skulls[i];
sk.y--;
sk.alpha = (sk.alpha - 0.01);
if (sk.alpha < 0){
layers[5].removeChild(sk);
skulls.splice(i, 1);
i = (i - 1);
};
sk = null;
i = (i + 1);
};
tl = pedestrians.length;
i = 0;
while (i < pedestrians.length) {
ped = pedestrians[i];
ped.behave();
pos = ped.body.GetWorldCenter();
isClown = (ped.type == "Clown");
if (ped.dead){
createSkull(pos, isClown);
};
EB = (isClown) ? ((ERASE_BUFFER + 10) * 54) : (ERASE_BUFFER * 54);
if (((((((((((pos.x * 20) < (-(screen.x) - EB))) || (((pos.x * 20) > ((-(screen.x) + 800) + EB))))) || (((pos.y * 20) < (-(screen.y) - EB))))) || (((pos.y * 20) > ((-(screen.y) + 600) + EB))))) || (ped.dead))){
removeActionItem(ped.graphic);
world.DestroyBody(ped.body);
ped.cleanUp();
pedestrians.splice(i, 1);
i = (i - 1);
};
pos = null;
ped = null;
i = (i + 1);
};
if ((frame % 20) == 10){
actionItems.sortOn("y", Array.NUMERIC);
l = actionItems.length;
while ((l = (l - 1)), l) {
if (actionLayer.getChildIndex(actionItems[l]) != l){
actionLayer.setChildIndex(actionItems[l], l);
};
};
};
for each (contact in contactListener.contactList) {
userData = contact.GetUserData();
if ((userData is Sensor)){
if (userData.triggerable(frame)){
masterFunc(contact, userData.ID, userData.tile);
};
} else {
masterFunc(contact, userData.ID, userData.tile);
};
userData = null;
};
if (vx < (-1 * CAMERA_LIMIT)){
vx = (-1 * CAMERA_LIMIT);
};
if (vx > CAMERA_LIMIT){
vx = CAMERA_LIMIT;
};
if (vy < (-1 * CAMERA_LIMIT)){
vy = (-1 * CAMERA_LIMIT);
};
if (vy > CAMERA_LIMIT){
vy = CAMERA_LIMIT;
};
if (chasing){
vx = (vx * 0.1);
vy = (vy * 0.25);
};
screen.x = (screen.x - (((((screen.x - (((-(DRAW_SCALE) * (pizzaBoy) ? (pizzaBoy.x / 20) : cx) + (SCREEN_WIDTH / 2)) - (vx * 20))) / (chasing) ? 5 : 25) + rand((-(shakeC) / 2), (shakeC / 2))) + (carBuying) ? 4 : 0) + 2));
screen.y = (screen.y - ((((screen.y - (((-(DRAW_SCALE) * (pizzaBoy) ? (pizzaBoy.y / 20) : cy) + (SCREEN_HEIGHT / 2)) - (vy * 16))) / (chasing) ? 5 : 25) - ((Math.abs(vy) > 3)) ? 0 : ((interF.currentLabel == "Talk")) ? (carBuying) ? -9 : -1.5 : (car.inter) ? 0 : (carSelecting) ? -3 : 3) + rand((-(shakeC) / 2), (shakeC / 2))));
shakeC--;
if (shakeC < 0){
shakeC = 0;
};
sx = Math.max(0, (-(int((screen.x / TILE_SIZE))) - ERASE_BUFFER));
sy = Math.max(0, (-(int((screen.y / TILE_SIZE))) - ERASE_BUFFER));
ex = Math.min(map.length, (((sx + int((SCREEN_WIDTH / TILE_SIZE))) + (2 * ERASE_BUFFER)) + 1));
ey = Math.min(map[0].length, (((sy + int((SCREEN_HEIGHT / TILE_SIZE))) + (2 * ERASE_BUFFER)) + 1));
i = sx;
while (i < ex) {
j = sy;
while (j < ey) {
k = 0;
while (k < 6) {
if ((((((((i == sx)) || ((i == (ex - 1))))) || ((j == sy)))) || ((j == (ey - 1))))){
if (map[i][j][k]){
if (map[i][j][k][1]){
id3 = map[i][j][k][0].split(":")[0];
if (map[i][j][k][1] == "Mover"){
} else {
if (tileShapes[("t" + id3)] != null){
world.DestroyBody(map[i][j][k][2]);
map[i][j][k][2] = null;
};
if (zsortThis(id3)){
removeActionItem(map[i][j][k][1]);
} else {
layers[k].removeChild(map[i][j][k][1]);
};
if (activeChars.indexOf(map[i][j][k][1]) != -1){
activeChars.splice(activeChars.indexOf(map[i][j][k][1]), 1);
};
map[i][j][k][1] = null;
};
};
};
};
k = (k + 1);
};
j = (j + 1);
};
i = (i + 1);
};
sx = Math.max(0, (-(int((screen.x / TILE_SIZE))) - DRAW_BUFFER));
sy = Math.max(0, (-(int((screen.y / TILE_SIZE))) - DRAW_BUFFER));
ex = Math.min(map.length, (((sx + int((SCREEN_WIDTH / TILE_SIZE))) + (2 * DRAW_BUFFER)) + 1));
ey = Math.min(map[0].length, (((sy + int((SCREEN_HEIGHT / TILE_SIZE))) + (2 * DRAW_BUFFER)) + 1));
i = sx;
while (i < ex) {
j = sy;
while (j < ey) {
flag = false;
k = 0;
for (;k < 6;(k = (k + 1))) {
mp = map[i][j][k];
if (mp){
if (!mp[1]){
tileInfo = mp[0].split(":");
id = int(tileInfo[0]);
cont = false;
if (id == 9058){
//unresolved if
} else {
if (id == 9511){
for each (n in nitros) {
if ((((n[0] == i)) && ((n[1] == j)))){
cont = true;
break;
};
};
//unresolved if
} else {
if (id == 9500){
for each (mn in money) {
if ((((mn[0] == i)) && ((mn[1] == j)))){
cont = true;
break;
};
};
//unresolved if
} else {
o = int(tileInfo[1]);
tsd = null;
if (id == 9153){
nam = getDelName(i, j);
if (!pizzas[nam]){
continue;
};
tsd = tileShapes[("t" + id)];
tsd[1] = ("INT_" + nam);
};
switchSpot = 0;
if (id == 9150){
nam2 = getDelName(i, j);
if (nam2){
if (isDead(nam2)){
continue;
} else {
if (pizzas[nam2]){
switchSpot = 3;
} else {
if (itemCheck(nam2)){
switchSpot = 4;
};
};
};
};
};
if (tileShapes[("t" + id)] != null){
tsd = tileShapes[("t" + id)];
if (removed.indexOf(tsd[1].split("_")[1]) != -1){
continue;
};
switch (tsd[0]){
case "ParkedCar":
cont = true;
carType = tsd[1];
forSale = (((id >= 9050)) && ((id < 9070)));
playerCar = (((id >= 9070)) && ((id < 9100)));
if (forSale){
if (carType == pCar[0]){
break;
};
};
if (playerCar){
break;
};
mp[1] = "Mover";
ang = ((id < 9100)) ? 0 : 270;
if (((((o % 2) == 1)) && ((id < 9100)))){
ang = 180;
};
if ((((o > 1)) && ((id >= 9100)))){
ang = 90;
};
carM = createParkedCar(carType, (((i * 54) / 20) + ((TILE_SIZE / DRAW_SCALE) * ((ang)==180) ? -0.1 : 1.1)), (((j * 54) / 20) + ((TILE_SIZE / DRAW_SCALE) * ((id >= 9100)) ? ((ang == 90)) ? 1 : 0 : 0.5)), ang, mp, forSale, playerCar);
if (forSale){
currentCarSale.push(carM);
};
if (playerCar){
currentPlayerCars.push(carM);
};
break;
case "Hydrant":
mp[1] = "Mover";
cont = true;
createHydrant(tsd[1], (((i * TILE_SIZE) / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)), ((((j * TILE_SIZE) / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)) + tsd[4]), mp);
break;
case "Mailbox":
mp[1] = "Mover";
cont = true;
createMailbox(tsd[1], (((i * TILE_SIZE) / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)), (((j * TILE_SIZE) / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)), mp);
break;
case "Cone":
mp[1] = "Mover";
cont = true;
createCone("", (((i * TILE_SIZE) / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)), (((j * TILE_SIZE) / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)), mp);
break;
case "Garbage":
mp[1] = "Mover";
cont = true;
createGarbage(tsd[1], (((i * TILE_SIZE) / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)), (((j * TILE_SIZE) / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)), mp);
break;
};
//unresolved if
} else {
flag = true;
if (id < 500){
tsid = 1;
} else {
if (id < 1500){
tsid = 2;
} else {
if (id < 2000){
tsid = 3;
} else {
if (id < 3000){
tsid = 4;
} else {
if (id < 3500){
tsid = 5;
} else {
if (id < 4500){
tsid = 6;
} else {
if (id < 5000){
tsid = 7;
} else {
if (id < 6000){
tsid = 8;
} else {
if (id < 6500){
tsid = 9;
} else {
if (id < 7500){
tsid = 10;
} else {
if (id < 8000){
tsid = 11;
} else {
if (id < 9000){
tsid = 12;
} else {
tsid = 13;
};
};
};
};
};
};
};
};
};
};
};
};
frAdj = [0, 0, 499, 1499, 1999, 2999, 3499, 4499, 4999, 5999, 6499, 7499, 7999, 8999][tsid];
CL = TileSets[tsid];
mp[1] = new (CL);
tile = mp[1];
if (debugDraw){
tile.alpha = 0.25;
};
tile.mouseEnabled = false;
tile.x = (i * TILE_SIZE);
tile.y = (j * TILE_SIZE);
tile.gotoAndStop(((id + switchSpot) - frAdj));
if ((o % 2) == 1){
tile.scaleX = -1;
tile.x = (tile.x + TILE_SIZE);
};
if (o > 1){
tile.scaleY = -1;
tile.y = (tile.y + TILE_SIZE);
};
if (zsortThis(id)){
addActionItem(tile);
} else {
layers[k].addChild(tile);
};
ch = isChar(id);
if (ch){
activeChars.push(tile);
};
if (((!((tileShapes[("t" + id)] == null))) || (ch))){
if (!tsd){
tsd = (ch) ? ["Circle", ("CHAR_" + getCharName(i, j)), false, 0.6, -0.2] : tileShapes[("t" + id)];
};
shapeInfo = [(((tile.x / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)) - ((tile.scaleX == -1)) ? (TILE_SIZE / DRAW_SCALE) : 0), (((tile.y / DRAW_SCALE) + ((TILE_SIZE / DRAW_SCALE) / 2)) + ((((tsd[0] == "Circle")) || (shapeOver))) ? tsd[4] : tsd[5]), tsd[3]];
if (tsd[0] == "Box"){
shapeInfo.push(tsd[4]);
};
mp[2] = this[("create" + (shapeOver) ? shapeOver : tsd[0])]((idOver) ? idOver : tsd[1], shapeInfo, tsd[2], tile);
};
tile = null;
tsd = null;
};
};
};
};
};
};
};
mp = null;
if (flag){
if (pedestrians.length < (pedMax * (mods.overpopulation) ? 3 : 1)){
if (Math.random() < (pedChance * (mods.overpopulation) ? 3 : 1)){
if (j < 270){
if ((((ground[i][j] == "Pavement")) || ((ground[i][j] == "Grass")))){
createPed(i, j);
};
};
};
};
};
j = (j + 1);
};
i = (i + 1);
};
for each (char in activeChars) {
if (char.char){
if (currentTile == char){
if (rand(0, 25) == 0){
char.char.gotoAndStop(rand(10, 20));
};
} else {
if (rand(0, 50) == 0){
char.char.gotoAndStop(rand(1, 9));
};
};
};
};
if (currentTile){
if (currentTile.char){
if (currentTile.char.char){
if (rand(0, 25) == 0){
currentTile.char.char.gotoAndStop(rand(10, 20));
};
};
};
};
if (rest){
rest = false;
stopLooper();
interF.goto("Title");
return;
};
} catch(e:Error) {
};
}
function itemCheck(_arg1):Boolean{
var _local2:*;
var _local3:int;
for (_local2 in inv.inv) {
if (inv.inv[_local2] > 0){
for each (_local3 in chars[_arg1].tasks) {
if (_local2 == chars[_arg1][("wants" + _local3)]){
return (true);
};
};
};
};
return (false);
}
function removeHotSpot(_arg1){
var _local2:Object = map[tilePos[_arg1][6]][tilePos[_arg1][7]][(tilePos[_arg1][8] - 1)];
if (_local2[1]){
_local2[1].alpha = 0;
};
if (_local2[2]){
world.DestroyBody(_local2[2]);
};
}
public function createMovingCircle(_arg1:Object, _arg2:Object){
var _local3:b2BodyDef = new b2BodyDef();
var _local4:b2CircleDef = new b2CircleDef();
_local3.position.Set(_arg2.X, _arg2.Y);
_local3.userData = _arg1;
var _local5:b2Body = world.CreateBody(_local3);
_local4.friction = _arg2.F;
_local4.density = _arg2.D;
_local4.restitution = (mods.bouncytown) ? 2 : _arg2.R;
_local4.isSensor = _arg2.S;
_local4.radius = _arg2.RD;
_local5.CreateShape(_local4);
var _local6:b2MassData = new b2MassData();
_local6.center.SetZero();
_local6.I = _arg2.I;
_local6.mass = _arg2.M;
_local5.SetMass(_local6);
_local5.AllowSleeping(true);
return (_local5);
}
function damageCar(_arg1, _arg2, _arg3:Boolean=false){
var _local4:int;
var _local5:Boolean;
if (((!(checkDamage(_arg1))) && ((car.speed > 0)))){
if (_arg3){
world.DestroyBody(_arg1);
};
shakeC = car.speed;
audio.playFX("hit", translate(car.speed, 0, 30, 0.2, 1));
_local4 = Math.ceil(((Number(_arg2) * car.defense) * (car.speed / -20)));
_local5 = adjustPizzaQuality(_local4);
if (((_local5) && (!((_local4 == 0))))){
interF.alert(("<font color='#FF0000'>Pizza Damage: " + (-1 * _local4)), null);
};
};
_arg1 = null;
}
function addActionItem(_arg1:MovieClip){
actionLayer.addChild(_arg1);
actionItems.push(_arg1);
_arg1 = null;
}
public function loadGame(){
var _local1 = this;
_local1[("loadGame" + saveNum)]();
kong.stats.submit("Pizzas", delTotal);
kong.stats.submit("Score", score);
kong.stats.submit("Clowns", clownsHit);
kong.stats.submit("Mimes", mimesHit);
kong.stats.submit("Robbers", robbersHit);
kong.stats.submit("Cop", (copCar) ? 1 : 0);
kong.stats.submit("Retired", (retired) ? 1 : 0);
}
public function checkLvl(){
if (level == 10){
return;
};
if (delTotal >= pizzaLvls[(level + 1)]){
level++;
firedAt = (firedAt + 2);
adjJobSec(0);
interF.tonyTalk((((("Congrats, kid! You've delivered <font color='#3ECC3E'>" + pizzaLvls[level]) + "</font> Pizzas! Your new rank is <font color='#3ECC3E'>") + getRank()) + "!</font>"));
audio.playFX("level", 1);
};
}
private function changeCar(_arg1:Number, _arg2:Boolean=false){
}
function removeActionItem(_arg1:MovieClip){
actionLayer.removeChild(_arg1);
actionItems.splice(actionItems.indexOf(_arg1), 1);
_arg1 = null;
}
public function restart(){
var _local1:*;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
for each (_local1 in traffic) {
_local1.destroy = true;
};
for each (_local2 in pedestrians) {
_local2.dead = true;
};
for each (_local3 in misc) {
_local3.destroy = true;
};
for each (_local4 in bits) {
_local4.destroy = true;
};
for each (_local5 in skulls) {
_local5.alpha = -1;
};
for (_local6 in pizzas) {
cancelDelivery(_local6);
};
if (pizzaBoy){
removeActionItem(pizzaBoy);
};
pizzaBoy = null;
rest = true;
}
function deliveredTo(_arg1){
return (!((delChars.indexOf(_arg1) == -1)));
}
public function interact(_arg1){
var _local4:Array;
var _local5:Array;
var _local6:Array;
var _local12:int;
var _local13:String;
var _local14:*;
var _local15:String;
var _local16:String;
var _local17:Boolean;
var _local18:String;
audio.musicVol(0.5);
var _local2:Boolean;
if ((((_arg1 == "Sal")) && ((pizzas[_arg1] == null)))){
carBuying = true;
carSelect = new CarSelect();
layers[5].addChild(carSelect);
updateCarStats(currentCarSale[0], true);
if (inv.inv.Magic1Brownie > 0){
_local2 = true;
roadie = true;
carsForSale.push("Roadie");
inv.removeFrom("Magic1Brownie");
pizzaBoy.item.gotoAndStop("Magic1Brownie");
};
};
if ((((((_arg1 == "Giblet")) && (copCar))) && ((pizzas.Giblet == null)))){
switchCar("Cop", "", false);
car.control = false;
};
currentWho = _arg1;
var _local3:Object = chars[_arg1];
var _local7 = 1;
var _local8:int;
var _local9:Boolean;
var _local10:Array = [];
var _local11:Boolean;
interScript = {};
cAct = 1;
if (pizzas[_arg1] != null){
_local4 = [];
_local12 = pizzas[_arg1].qual;
_local13 = getQuality(_local12);
_local8 = ((Math.round((_local3.tip * (_local12 / 100))) * pizzas[_arg1].num) * ((_local13 == "good")) ? 1.5 : ((_local13 == "med")) ? 1 : 0.5);
var _local19 = this;
var _local20 = ("del_" + _local13);
var _local21 = (_local19[_local20] + 1);
_local19[_local20] = _local21;
if (_local13 == "poor"){
if (del_poor < 4){
firstPoor = true;
};
if (adjJobSec(Math.floor((pizzas[_arg1].num / 2)))){
return;
};
};
delTotal = (delTotal + pizzas[_arg1].num);
kong.stats.submit("Pizzas", delTotal);
_local4.push([_arg1, _local13]);
_local4.push(["MSG", ("Tip: $" + _local8)]);
addAct(("act" + _local7), _local4, [("add_$" + _local8)]);
_local7++;
_local11 = true;
} else {
if (_local3.tasks.length == 0){
addAct(("act" + _local7), [[_arg1, (_local2) ? "chat2" : "chat"]], []);
};
};
inv.money = (inv.money + _local8);
addScore((_local8 * 10));
if (_local3.tasks.length > 0){
_local14 = _local3.tasks[0];
_local4 = [];
_local15 = _local3[("wants" + _local14)];
_local16 = _local3[("has" + _local14)];
_local17 = _local3[("choice" + _local14)];
_local18 = process(_local16, "1");
if (_local17){
if (inv.exists(_local15)){
_local5 = [];
_local6 = [];
_local4.push(["CLR", ""]);
_local4.push([_arg1, ("prop" + _local14)]);
_local4.push(["MSG", "YES / NO"]);
_local5.push(["CLR", ""]);
_local5.push([_arg1, ("give" + _local14)]);
_local5.push(["MSG", ((_arg1 + " gives you ") + _local18.toUpperCase())]);
_local6.push(["CLR", ""]);
_local6.push([_arg1, ("rej" + _local14)]);
addAct(("act" + _local7), _local4, ["choice_YN"], [_local5, [("add_" + _local16), ("remove_" + _local15), ((("taskDone_" + _arg1) + "#") + _local14)]], [_local6, []]);
_local7++;
} else {
if (!_local9){
_local10 = [[[_arg1, ("clue" + _local14)]], []];
_local9 = true;
};
};
} else {
if (((inv.exists(_local15)) || (pizzaQualityCheck(_local15, _arg1)))){
_local4.push(["CLR", ""]);
_local4.push([_arg1, ("give" + _local14)]);
_local4.push(["MSG", ((_arg1 + " gives you ") + _local18.toUpperCase())]);
addAct(("act" + _local7), _local4, [("add_" + _local16), ("remove_" + _local15), ((("taskDone_" + _arg1) + "#") + _local14)]);
_local7++;
} else {
if (!_local9){
_local10 = [[[_arg1, ("clue" + _local14)]], []];
_local9 = true;
};
};
};
};
inv.money = (inv.money - _local8);
if (_local11){
cancelDelivery(_arg1);
};
if (_local10.length != 0){
addAct(("act" + _local7), _local10[0], _local10[1]);
};
audio.musicVol(1);
cAct = 1;
doAct(1);
}
public function chooseCar(){
currentPlayerCars.splice(currentPlayerCars.indexOf(currentCar.type), 1);
leaveSelect(false);
pizzaBoyTravel((pizzaBoy.x / 54), (pizzaBoy.y / 54), getTile(currentCar.body.GetWorldCenter().x), getTile(currentCar.body.GetWorldCenter().y), "newCar");
audio.playFX("accept", 1);
}
function copAlert(_arg1){
var _local2:*;
switch (_arg1){
case 1:
for each (_local2 in traffic) {
if ((_local2 is Police)){
if (!_local2.chasing){
interF.alert("Uh oh...", null, true);
_local2.startChase();
audio.playSiren();
};
};
};
break;
case 2:
forceCop = rand(1, 2);
break;
case 3:
forceCop = rand(3, 5);
break;
};
}
function updateCap(){
interF.hud.cap.text = ((getTotalPizzas() + "/") + carTypes[car.type].cap);
}
function createCone(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Object):void{
var _local5:* = new Mover("CON_5", _arg1, new Cone(), 0.95, _arg4);
addActionItem(_local5.graphic);
_local5.body = createMovingCircle(_local5, {X:_arg2, Y:_arg3, RD:0.7, F:1, M:2, D:1, R:0.75, I:10, S:false});
misc.push(_local5);
_local5 = null;
}
function debug(_arg1){
interF.debug.appendText(String(_arg1));
}
function findGas(){
var _local2:int;
var _local6:Array;
var _local7:Number;
resumeControl();
var _local1:Array = [[191, 100, 3], [342, 57, 2], [366, 271, 2], [247, 234, 3], [69, 278, 2]];
var _local3:Number = 100000000;
var _local4:int;
while (_local4 < _local1.length) {
_local6 = _local1[_local4];
_local7 = (Math.pow((_local6[0] - carX), 2) + Math.pow((_local6[1] - carY), 2));
if (_local7 < _local3){
_local2 = _local4;
_local3 = _local7;
};
_local4++;
};
var _local5:* = _local1[_local2];
car.body.SetXForm(new b2Vec2(((_local5[0] * 54) / 20), ((_local5[1] * 54) / 20)), car.angle);
createTowTruck((((_local5[0] * 54) / 20) - 6), ((_local5[1] * 54) / 20), map[_local5[0]][_local5[1]][_local5[2]]);
interF.alert("100 Dollar Towing Fee", null, true);
addMoney(-100);
car.gas = car.gasMax;
}
function process(_arg1:String, _arg2:String){
var _local3 = "";
var _local4:Array = _arg1.split(_arg2);
var _local5:int;
while (_local5 < _local4.length) {
_local3 = (_local3 + (_local4[_local5] + " "));
_local5++;
};
return (_local3.substr(0, (_local3.length - 1)));
}
function addScore(_arg1){
if (_arg1 != 0){
score = (score + _arg1);
if (score < 0){
score = 0;
};
};
interF.hud.score.text = String(score);
}
private function createPed(_arg1:int, _arg2:int):void{
var _local3:Array = randElement(hoodPeds[hood]);
var _local4:String = _local3[0];
if (Math.random() < 0.05){
_local4 = "Clown";
_local3[1] = clownLevels[level];
} else {
if (Math.random() < 0.02){
_local4 = "Robber";
_local3[1] = [1];
} else {
if (Math.random() < 0.025){
_local4 = "Mime";
_local3[1] = [1];
} else {
if (Math.random() < 0.01){
_local4 = "HotDog";
_local3[1] = [1];
};
};
};
};
if (mods.clownxplosion){
_local4 = "Clown";
};
if (mods.mimeopolis){
_local4 = "Mime";
};
if (mods.copsnrobbers){
_local4 = "Robber";
};
if (mods.targetpractice){
_local4 = ["Robber", "Mime", "Clown"][rand(0, 2)];
};
var _local5:int = randElement(_local3[1]);
var _local6:* = new Pedestrian("PEDESTRIAN", _local4, pedFactory(_local4), _local5, ((pedData[_local4].S + ((_local4 == "Clown")) ? (_local5 * 10) : 0) * (mods.toomuchcoffee) ? 2 : (retired) ? 1.5 : 1), this);
addActionItem(_local6.graphic);
_local6.body = createMovingCircle(_local6, {X:(((_arg1 + 0.5) * TILE_SIZE) / DRAW_SCALE), Y:(((_arg2 + 0.5) * TILE_SIZE) / DRAW_SCALE), F:1, M:pedData[_local4].M, D:1, R:0, RD:0.5, I:10, S:false});
pedestrians.push(_local6);
}
public function kongScore(){
kong.stats.submit("Score", score);
}
function addGAS(_arg1){
var _local2:int = Math.round(((car.gasMax - car.gas) * _arg1));
if (inv.money < _local2){
_local2 = inv.money;
car.gas = (car.gas + (_local2 / _arg1));
} else {
car.gas = car.gasMax;
};
addMoney(-(_local2));
return (_local2);
}
function deliveryManage(){
var _local3:int;
var _local4:int;
if (newGame){
if (delQNum == 0){
addToDeliveryQ();
};
return;
};
if (delChars.length > 10){
_local3 = (delChars.length / 10);
_local4 = 0;
while (_local4 < _local3) {
delChars.shift();
_local4++;
};
};
var _local1:int = ((level * 2) + 3);
var _local2:int = ((_local1 - delANum) - delQNum);
_local2 = (_local2 - rand(0, Math.min(_local2, (Math.ceil((level + 1)) / 2))));
_local4 = 0;
while (_local4 < _local2) {
addToDeliveryQ();
_local4++;
};
}
public function buyCar2(_arg1){
if (!currentCar){
return;
};
var _local2:int = currentCar.extraVars.cost;
if (inv.money < _local2){
addSpeech("Sal", ("No" + currentCar.type));
} else {
if (_local2 != 0){
addMoney(-(_local2));
carsForSale.splice(carsForSale.indexOf(currentCar.type), 1);
playerCars.push([currentCar.type, currentCar.extraVars.color]);
};
pizzaBoyTravel((pizzaBoy.x / 54), (pizzaBoy.y / 54), getTile(currentCar.body.GetWorldCenter().x), getTile(currentCar.body.GetWorldCenter().y), "newCar");
leaveSal();
};
}
public function leaveSelect(_arg1){
carSelecting = false;
layers[5].removeChild(carSelect);
carSelect = null;
if (_arg1){
pizzaBoyTravel((pizzaBoy.x / 54), (pizzaBoy.y / 54), pizzaBoy.sx, pizzaBoy.sy, "returnToCar");
};
}
private function loadMap(_arg1:String):void{
var _local7:b2Body;
var _local10:*;
var _local11:Array;
var _local12:String;
var _local13:Array;
var _local14:int;
var _local15:int;
var _local16:int;
var _local17:*;
var _local18:String;
var _local19:Array;
var _local20:Array;
var _local21:int;
var _local22:int;
var _local23:Array;
var _local24:*;
var _local25:*;
var _local26:Array;
var _local27:GameObject;
var _local28:Boolean;
var _local29:*;
var _local30:*;
var _local31:Number;
var _local32:Number;
var _local33:*;
var _local2:* = _arg1.split(" ");
map = new Array(int(_local2[0]));
var _local3:* = 0;
while (_local3 < map.length) {
map[_local3] = new Array(int(_local2[1]));
_local10 = 0;
while (_local10 < map[_local3].length) {
map[_local3][_local10] = new Array(MAP_LAYERS);
_local10++;
};
_local3++;
};
var _local4:String = _local2[4];
var _local5:String = _local2[5];
ground = new Array(map.length);
var _local6:int;
while (_local6 < map.length) {
ground[_local6] = new Array(map[_local6].length);
_local6++;
};
_local2 = _local2[3].split("|");
_local2.pop();
_local3 = 0;
while (_local3 < _local2.length) {
_local11 = _local2[_local3].split("-")[1].split(",");
_local11.pop();
for each (_local12 in _local11) {
_local13 = _local12.split(":");
_local10 = int(_local13[0]);
_local14 = int(_local13[1]);
_local15 = int(_local13[2]);
_local16 = int(_local13[3]);
map[_local3][_local10][_local14] = new Array(3);
map[_local3][_local10][_local14][0] = ((_local15 + ":") + _local16);
for (_local17 in tileGround) {
_local18 = String(_local17);
_local19 = tileGround[_local17];
for each (_local20 in _local19) {
_local21 = _local20[0];
while (_local21 <= _local20[1]) {
if (_local15 == _local21){
ground[_local3][_local10] = _local18;
_local22 = 1;
while (_local22 < 5) {
_local19 = tileFill[("t" + _local22)];
if (_local19.indexOf(_local15) != -1){
_local23 = this[("type" + _local22)];
_local24 = (_local3 + _local23[0]);
while (_local24 <= (_local3 + _local23[1])) {
_local25 = (_local10 + _local23[2]);
while (_local25 <= (_local10 + _local23[3])) {
if (ground[_local24][_local25] != "Pavement"){
ground[_local24][_local25] = _local18;
};
_local25++;
};
_local24++;
};
break;
};
_local22++;
};
break;
};
_local21++;
};
};
};
};
_local3++;
};
var _local8:Array = _local4.split(",");
var _local9:int;
while (_local9 < _local8.length) {
_local26 = _local8[_local9].split(":");
_local28 = Boolean(int(_local26[2]));
if (_local26[0] == "C"){
createCircle(_local26[1], [(int(_local26[3]) / DRAW_SCALE), (int(_local26[4]) / DRAW_SCALE), (int(_local26[5]) / DRAW_SCALE)], Boolean(int(_local26[2])), null);
} else {
if (_local26[0] == "R"){
_local29 = new Point((int(_local26[3]) / DRAW_SCALE), (int(_local26[4]) / DRAW_SCALE));
_local30 = new Point((int(_local26[5]) / DRAW_SCALE), (int(_local26[6]) / DRAW_SCALE));
createBox(_local26[1], [(_local29.x + ((_local30.x - _local29.x) / 2)), (_local30.y - ((_local30.y - _local29.y) / 2)), ((_local30.x - _local29.x) / 2), ((_local30.y - _local29.y) / 2)], Boolean(int(_local26[2])), null);
} else {
if (_local26[0] == "P"){
_local27 = (Boolean(int(_local26[2]))) ? new Sensor(_local26[1], (_local26[1] == "WAT")) : new GameObject(_local26[1]);
bodyDef.userData = _local27;
_local31 = (_local26[3] / DRAW_SCALE);
_local32 = (_local26[4] / DRAW_SCALE);
bodyDef.position.Set(_local31, _local32);
polyDef.vertexCount = ((_local26.length - 3) / 2);
_local3 = 5;
while (_local3 < _local26.length) {
polyDef.vertices[int(((_local3 - 3) / 2))].Set(((int(_local26[_local3]) / DRAW_SCALE) - _local31), ((int(_local26[(_local3 + 1)]) / DRAW_SCALE) - _local32));
_local3 = (_local3 + 2);
};
polyDef.isSensor = _local28;
_local7 = world.CreateBody(bodyDef);
_local7.CreateShape(polyDef);
_local27.body = _local7;
};
};
};
_local9++;
};
_local2 = _local5.split(",");
checkPoints = {};
_local3 = 1;
while (_local3 < _local2.length) {
_local33 = _local2[_local3].split(":");
checkPoints[("p" + _local33[0])] = new CheckPoint(_local33[0], (Number(_local33[1]) / DRAW_SCALE), (Number(_local33[2]) / DRAW_SCALE));
_local10 = 3;
while (_local10 < _local33.length) {
checkPoints[("p" + _local33[0])].out.push(int(_local33[_local10]));
_local10++;
};
_local3++;
};
}
function checkDamage(_arg1):Boolean{
var _local3:Array;
var _local2:Boolean;
for each (_local3 in damageHistory) {
if (_local3[1] == _arg1){
_local2 = true;
break;
};
};
if (!_local2){
damageHistory.push([frame, _arg1]);
};
return (_local2);
}
function carFactory(_arg1){
switch (_arg1){
case "ColtOrange":
return (new ColtOrange());
case "ColtWhite":
return (new ColtWhite());
case "ColtYellow":
return (new ColtYellow());
case "ColtBlue":
return (new ColtBlue());
case "ColtPink":
return (new ColtPink());
case "ColtGreen":
return (new ColtGreen());
case "ColtPurple":
return (new ColtPurple());
case "WagonOrange":
return (new WagonOrange());
case "WagonPurple":
return (new WagonPurple());
case "WagonOlive":
return (new WagonOlive());
case "WagonGreen":
return (new WagonGreen());
case "WagonBlue":
return (new WagonBlue());
case "WagonPink":
return (new WagonPink());
case "WagonBrown":
return (new WagonBrown());
case "BugWhite":
return (new BugWhite());
case "BugGrey":
return (new BugGrey());
case "BugRed":
return (new BugRed());
case "BugYellow":
return (new BugYellow());
case "BugPink":
return (new BugPink());
case "BugGreen":
return (new BugGreen());
case "BugBlue":
return (new BugBlue());
case "BummerOrange":
return (new BummerOrange());
case "BummerMustard":
return (new BummerMustard());
case "BummerOlive":
return (new BummerOlive());
case "BummerBlue":
return (new BummerBlue());
case "BummerGrey":
return (new BummerGrey());
case "BummerGrey2":
return (new BummerGrey2());
case "BummerGreen":
return (new BummerGreen());
case "GoblinOrange":
return (new GoblinOrange());
case "GoblinBlue":
return (new GoblinBlue());
case "GoblinYellow":
return (new GoblinYellow());
case "GoblinGrey":
return (new GoblinGrey());
case "GoblinTan":
return (new GoblinTan());
case "GoblinPurple":
return (new GoblinPurple());
case "JeepOrange":
return (new JeepOrange());
case "JeepGreen":
return (new JeepGreen());
case "JeepBrown":
return (new JeepBrown());
case "JeepYellow":
return (new JeepYellow());
case "JeepBlue":
return (new JeepBlue());
case "JeepGrey":
return (new JeepGrey());
case "JeepOlive":
return (new JeepOlive());
case "SpunkBlue":
return (new SpunkBlue());
case "SpunkBrown":
return (new SpunkBrown());
case "SpunkGreen":
return (new SpunkGreen());
case "SpunkYellow":
return (new SpunkYellow());
case "SpunkRed":
return (new SpunkRed());
case "SpunkPurple":
return (new SpunkPurple());
case "SpunkPink":
return (new SpunkPink());
case "RoadieBlue":
return (new RoadieBlue());
case "RoadieRed":
return (new RoadieRed());
case "RoadiePink":
return (new RoadiePink());
case "RoadiePurple":
return (new RoadiePurple());
case "Cop":
return (new Cop());
};
}
private function createTrafficCar(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:CheckPoint):void{
var _local7:*;
var _local8:CopLoc;
if (mods.copsnrobbers){
_arg1 = "Cop";
};
if (mods.thegetaway){
if (rand(0, 15) == 0){
_arg1 = "Cop";
};
};
if ((((_arg1 == "Cop")) && (mods.easydriver))){
return;
};
var _local6:Object = carTypes[_arg1];
if ((((_arg1 == "Cop")) || ((((forceCop > 0)) && (!(mods.easydriver)))))){
_local8 = new CopLoc();
layers[6].addChild(_local8);
_local7 = new Police("TRAFFIC", "Cop", new Cop(), ((car.maxSpeed + ((level + 1) / 2)) - ((carTypes.Max.speed - _local6.speed) / 2)), _local6.mass, (_local6.accel * (mods.crazydrivers) ? 2 : (retired) ? 1.5 : 1), _arg5, this, _local8, mods.deepfreeze);
} else {
_local7 = new Traffic("TRAFFIC", _arg1, carFactory((_arg1 + _arg2)), ((car.maxSpeed + ((level + 1) / 2)) - ((carTypes.Max.speed - _local6.speed) / 2)), _local6.mass, (_local6.accel * (mods.crazydrivers) ? 2 : (retired) ? 1.5 : 1), _arg5, mods.deepfreeze);
};
addActionItem(_local7.graphic);
_local7.body = createMovingBox(_local7, [{X:_arg3, Y:_arg4, A:0, L:_local6.l, W:_local6.w, F:1, M:_local6.mass, D:1, R:0.5, I:10, S:false}, {L:1.5, W:1, X:(_local6.l + 3), Y:0, A:0, S:true}]);
traffic.push(_local7);
_local7.behave();
if ((((((_arg1 == "Cop")) && (((chasing) || (mods.thegetaway))))) || ((((forceCop > 0)) && (!(mods.easydriver)))))){
_local7.startChase();
audio.playSiren();
};
if (forceCop > 0){
forceCop--;
};
}
public function kongRetired(){
kong.stats.submit("Retired", 1);
}
function outOfGas(){
audio.playEX("outGas");
car.control = false;
interF.gotoAndPlay("Gas");
}
function adjJobSec(_arg1:int):Boolean{
firedAt = (firedAt - _arg1);
if (firedAt < 0){
firedAt = 0;
};
if (firedAt > 10){
firedAt = 10;
};
interF.hud.sec.gotoAndStop(int(translate(firedAt, 0, 10, 100, 1)));
if (firedAt <= 0){
gameOver();
return (true);
};
if (firedAt < 3){
interF.tonyTalk("You're in danger of losing your job, kid! Better shape up...");
};
return (false);
}
public function addToPizzaQ(_arg1, _arg2){
pizzaQ[_arg1] = {};
pizzaQ[_arg1].nam = _arg1;
pizzaQ[_arg1].num = _arg2;
delQNum++;
}
function getPlayerCarColor(_arg1):String{
var _local2:*;
for each (_local2 in playerCars) {
if (_local2[0] == _arg1){
return (_local2[1]);
};
};
return ("");
}
public function saveGame1(){
var char:*;
savedGame.data.score1 = score;
savedGame.data.moneyNum1 = inv.money;
savedGame.data.level1 = level;
savedGame.data.busts1 = busts;
savedGame.data.firedAt1 = firedAt;
savedGame.data.delTotal1 = delTotal;
savedGame.data.del_poor1 = del_poor;
savedGame.data.del_med1 = del_med;
savedGame.data.del_good1 = del_good;
savedGame.data.firstMoney1 = firstMoney;
savedGame.data.firstPoor1 = firstPoor;
savedGame.data.roadie1 = roadie;
savedGame.data.copCar1 = copCar;
savedGame.data.retired1 = retired;
savedGame.data.clownsHit1 = clownsHit;
savedGame.data.mimesHit1 = mimesHit;
savedGame.data.robbersHit1 = robbersHit;
savedGame.data.money1 = money.slice();
savedGame.data.pCar1 = pCar.slice();
savedGame.data.carsForSale1 = carsForSale.slice();
savedGame.data.removed1 = removed.slice();
savedGame.data.inv1 = dupeObject(inv.inv);
for (char in chars) {
savedTasks[String(char)] = chars[char].tasks.slice();
};
savedGame.data.tasks1 = dupeObject(savedTasks);
try {
savedGame.flush();
} catch(e:Error) {
};
}
public function saveGame3(){
var char:*;
savedGame.data.score3 = score;
savedGame.data.moneyNum3 = inv.money;
savedGame.data.level3 = level;
savedGame.data.busts3 = busts;
savedGame.data.firedAt3 = firedAt;
savedGame.data.delTotal3 = delTotal;
savedGame.data.del_poor3 = del_poor;
savedGame.data.del_med3 = del_med;
savedGame.data.del_good3 = del_good;
savedGame.data.firstMoney3 = firstMoney;
savedGame.data.firstPoor3 = firstPoor;
savedGame.data.roadie3 = roadie;
savedGame.data.copCar3 = copCar;
savedGame.data.retired3 = retired;
savedGame.data.clownsHit3 = clownsHit;
savedGame.data.mimesHit3 = mimesHit;
savedGame.data.robbersHit3 = robbersHit;
savedGame.data.money3 = money.slice();
savedGame.data.pCar3 = pCar.slice();
savedGame.data.carsForSale3 = carsForSale.slice();
savedGame.data.removed3 = removed.slice();
savedGame.data.inv3 = dupeObject(inv.inv);
for (char in chars) {
savedTasks[String(char)] = chars[char].tasks.slice();
};
savedGame.data.tasks3 = dupeObject(savedTasks);
try {
savedGame.flush();
} catch(e:Error) {
};
}
public function saveGame(){
savedGame.data.musicVolume = musicVolume;
savedGame.data.sfxVolume = sfxVolume;
var _local1 = this;
_local1[("saveGame" + saveNum)]();
}
public function convertOldSave(){
savedGame.data.score1 = savedGame.data.score;
savedGame.data.moneyNum1 = savedGame.data.moneyNum;
savedGame.data.level1 = savedGame.data.level;
savedGame.data.busts1 = savedGame.data.busts;
savedGame.data.firedAt1 = savedGame.data.firedAt;
savedGame.data.delTotal1 = savedGame.data.delTotal;
savedGame.data.del_poor1 = savedGame.data.del_poor;
savedGame.data.del_med1 = savedGame.data.del_med;
savedGame.data.del_good1 = savedGame.data.del_good;
savedGame.data.firstMoney1 = savedGame.data.firstMoney;
savedGame.data.firstPoor1 = savedGame.data.firstPoor;
savedGame.data.roadie1 = savedGame.data.roadie;
savedGame.data.copCar1 = savedGame.data.copCar;
savedGame.data.money1 = savedGame.data.money;
savedGame.data.pCar1 = savedGame.data.pCar.slice();
savedGame.data.carsForSale1 = savedGame.data.carsForSale.slice();
savedGame.data.removed1 = savedGame.data.removed.slice();
savedGame.data.inv1 = dupeObject(savedGame.data.inv);
delete savedGame.data.score;
delete savedGame.data.moneyNum;
delete savedGame.data.level;
delete savedGame.data.busts;
delete savedGame.data.firedAt;
delete savedGame.data.delTotal;
delete savedGame.data.del_poor;
delete savedGame.data.del_med;
delete savedGame.data.del_good;
delete savedGame.data.firstMoney;
delete savedGame.data.firstPoor;
delete savedGame.data.roadie;
delete savedGame.data.copCar;
delete savedGame.data.money;
delete savedGame.data.pCar;
delete savedGame.data.carsForSale;
delete savedGame.data.removed;
delete savedGame.data.inv;
}
function pauseGame(){
if (interF.current != "Talk"){
if (interF.currentLabel != "Pause"){
interF.goto("Pause");
hideHud();
stopLooper();
audio.musicVol(0.5);
} else {
interF.goto("Game");
showHud();
startLooper();
audio.musicVol(1);
};
};
}
public function saveGame2(){
var char:*;
savedGame.data.score2 = score;
savedGame.data.moneyNum2 = inv.money;
savedGame.data.level2 = level;
savedGame.data.busts2 = busts;
savedGame.data.firedAt2 = firedAt;
savedGame.data.delTotal2 = delTotal;
savedGame.data.del_poor2 = del_poor;
savedGame.data.del_med2 = del_med;
savedGame.data.del_good2 = del_good;
savedGame.data.firstMoney2 = firstMoney;
savedGame.data.firstPoor2 = firstPoor;
savedGame.data.roadie2 = roadie;
savedGame.data.copCar2 = copCar;
savedGame.data.retired2 = retired;
savedGame.data.clownsHit2 = clownsHit;
savedGame.data.mimesHit2 = mimesHit;
savedGame.data.robbersHit2 = robbersHit;
savedGame.data.money2 = money.slice();
savedGame.data.pCar2 = pCar.slice();
savedGame.data.carsForSale2 = carsForSale.slice();
savedGame.data.removed2 = removed.slice();
savedGame.data.inv2 = dupeObject(inv.inv);
for (char in chars) {
savedTasks[String(char)] = chars[char].tasks.slice();
};
savedGame.data.tasks2 = dupeObject(savedTasks);
try {
savedGame.flush();
} catch(e:Error) {
};
}
function randElement(_arg1:Array){
return (_arg1[rand(0, (_arg1.length - 1))]);
}
function inRange(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int):Boolean{
var _local10:Number;
var _local11:int;
if (car.heading.x == 0){
_arg1 = (_arg1 - 10);
};
if (car.heading.y == 0){
_arg2 = (_arg2 - 5);
};
var _local7:Boolean;
var _local8:Number = (_arg5 - stx);
var _local9:int = (car.heading.x * 15);
if (_local8 < (_arg1 + _local9)){
if (_local8 > (-(_arg1) + _local9)){
_local10 = (_arg6 - sty);
_local11 = (car.heading.y * 10);
if (_local10 < (_arg2 + _local11)){
if (_local10 > (-(_arg2) + _local11)){
_local7 = !((((((((_local8 < _arg3)) && ((_local8 > -(_arg3))))) && ((_local10 < _arg4)))) && ((_local10 > -(_arg4)))));
};
};
};
};
return (_local7);
}
function getTile(_arg1):int{
return (Math.round(((_arg1 * 20) / 54)));
}
public function createBox(_arg1:String, _arg2:Array, _arg3:Boolean, _arg4:MovieClip){
var _local5:GameObject = (_arg3) ? new Sensor(_arg1, (_arg1 == "WAT")) : new GameObject(_arg1);
bodyDef.position.Set(_arg2[0], _arg2[1]);
bodyDef.userData = _local5;
boxDef.isSensor = _arg3;
if (mods.bouncytown){
boxDef.restitution = 2;
};
boxDef.SetAsBox(Math.abs(_arg2[2]), Math.abs(_arg2[3]));
var _local6:b2Body = world.CreateBody(bodyDef);
_local6.CreateShape(boxDef);
_local5.body = _local6;
if (_arg4 != null){
_local5.tile = _arg4;
};
return (_local6);
}
function addToDeliveryQ(){
var _local2:*;
var _local3:*;
var _local1:int;
do {
_local2 = delHoods[rand(0, hoodRanges[level])];
_local3 = ((Math.random() < 0.5)) ? randElement(delCommon[_local2]) : randElement(delUnique[_local2]);
if (isDead(_local3)){
} else {
if (((!(deliveredTo(_local3))) || ((_temp1 > 10)))){
addToPizzaQ(_local3, rand(1, Math.ceil(((level / 2) + 3))));
break;
};
};
} while (true);
}
public function buyCar(){
var _local1:int = currentCar.extraVars.cost;
if (inv.money < _local1){
addSpeech("Sal", ("No" + currentCar.type));
} else {
if (_local1 != 0){
addMoney(-(_local1));
carsForSale.splice(carsForSale.indexOf(currentCar.type), 1);
playerCars.push([currentCar.type, currentCar.extraVars.color]);
};
pizzaBoyTravel((pizzaBoy.x / 54), (pizzaBoy.y / 54), getTile(currentCar.body.GetWorldCenter().x), getTile(currentCar.body.GetWorldCenter().y), "newCar");
leaveSal();
};
}
private function createParkedCar(_arg1:String, _arg2:Number, _arg3:Number, _arg4:int, _arg5:Object, _arg6:Boolean, _arg7:Boolean):Mover{
var _local10:CarButton;
if (mods.copsnrobbers){
_arg1 = "Cop";
};
var _local8:Object = dupeObject(carTypes[_arg1]);
if (_arg1 == "Cop"){
_local8.color = "";
} else {
do {
_local8.color = randElement(carColors[_arg1]);
} while (_local8.color == pCar[1]);
};
_local8.forSale = _arg6;
if (carsForSale.indexOf(_arg1) == -1){
_local8.cost = 0;
};
_local8.player = _arg7;
var _local9:* = new Mover("PARKEDCAR", _arg1, carFactory((_arg1 + _local8.color)), 0.9, _arg5);
_local9.px = _arg2;
_local9.py = _arg3;
addActionItem(_local9.graphic);
if (_arg6){
_local10 = new CarButton();
_local9.graphic.addChild(_local10);
_local8.cb = _local10;
_local8.cb.pc = _local9;
_local10.addEventListener(MouseEvent.ROLL_OVER, selectCar, false, 0, true);
_local10.addEventListener(MouseEvent.CLICK, buyCar2, false, 0, true);
};
_local9.body = createMovingBox(_local9, [{X:_arg2, Y:_arg3, A:(_arg4 * DEG2RAD), L:_local8.l, W:_local8.w, F:1, M:_local8.mass, D:(((_arg7) || (_arg6))) ? 0 : 1, R:0.5, I:50, S:false}]);
_local9.extraVars = _local8;
misc.push(_local9);
return (_local9);
}
public function startGame(_arg1:Boolean=false):void{
newGame = true;
restartVars();
if (_arg1){
loadGame();
};
adjJobSec(0);
addMoney(0);
addScore(0);
startLooper();
switchCar(pCar[0], pCar[1], true);
enterPizzeria(true);
}
function createHydrant(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Object):void{
var _local5:* = new Mover("HYD_5", _arg1, new Hydrant(), 0.98, _arg4, this);
_local5.extraVars.hit = 0;
_local5.graphic.gotoAndStop((_arg1 + "1"));
addActionItem(_local5.graphic);
_local5.body = createMovingBox(_local5, [{X:_arg2, Y:_arg3, A:0, L:0.7, W:0.7, F:1, M:25, D:1, R:0.75, I:10, S:false}]);
misc.push(_local5);
_local5 = null;
}
function toggleMute(){
muted++;
muted = (muted % 3);
audio.musicVol(((muted == 0)) ? 1 : 0);
}
function createGarbage(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Object):void{
var _local5:* = new Mover("GRB_5", _arg1, new Garbage(), 0.975, _arg4, this);
_local5.extraVars.hit = 0;
_local5.graphic.gotoAndStop((_arg1 + "1"));
addActionItem(_local5.graphic);
_local5.body = createMovingCircle(_local5, {X:_arg2, Y:_arg3, RD:1, F:1, M:1, D:1, R:0.75, I:10, S:false});
misc.push(_local5);
_local5 = null;
}
function isHydrant(_arg1){
return (!(([801, 811].indexOf(_arg1) == 1)));
}
function createGarb(_arg1:Mover, _arg2:Number){
var _local4:Bit;
_arg1.graphic.gotoAndStop((_arg1.type + "2"));
var _local3:int = ((5 - _arg1.extraVars.hit) * _arg2);
var _local5 = 1;
while (_local5 < 8) {
if (rand(0, _local3) > 35){
_local4 = new Bit(new Garb(), 0.75, (_arg1.graphic.x + 12), (_arg1.graphic.y + rand(-6, 6)));
_local4.graphic.gotoAndStop(rand(1, 10));
layers[1].addChild(_local4.graphic);
bits.push(_local4);
};
_local5++;
};
if (_arg1.extraVars.hit == 0){
_local4 = new Bit(new GarbLid(), 0.95, (_arg1.graphic.x + 12), (_arg1.graphic.y + rand(-6, 6)));
layers[1].addChild(_local4.graphic);
bits.push(_local4);
};
_local4 = null;
_arg1.extraVars.hit++;
}
function isChar(_arg1){
return ((((_arg1 > 9300)) && ((_arg1 < 9343))));
}
function isCommon(_arg1){
var _local2:Array;
for each (_local2 in delCommon) {
if (_local2.indexOf(_arg1) != -1){
return (true);
};
};
return (false);
}
function interNo(){
doAct((cAct + "NO"));
}
function createSkull(_arg1, _arg2){
skulls.push(new Skull());
var _local3:* = skulls[(skulls.length - 1)];
layers[5].addChild(_local3);
_local3.x = ((_arg1.x * 20) - 300);
_local3.y = ((_arg1.y * 20) - 250);
if (_arg2){
_local3.gotoAndPlay(30);
audio.playFX("clown", 0.9);
} else {
audio.playFX("ped", 0.9);
};
}
private function clearMap():void{
var _local1:* = 0;
while (_local1 < NUM_LAYERS) {
while (layers[_local1].numChildren > 0) {
layers[_local1].removeChildAt(0);
};
_local1++;
};
}
function zsortThis(_arg1){
return ((((((_arg1 > 9300)) && ((_arg1 < 9500)))) || (!((zsort.indexOf(_arg1) == -1)))));
}
public function nextCar(_arg1, _arg2, _arg3){
var _local4:Array = (_arg3) ? currentCarSale : currentPlayerCars;
_local4.sortOn(((_arg1)!=0) ? "px" : "py", Array.NUMERIC);
var _local5:int = _local4.indexOf(currentCar);
_local5 = (_local5 + ((_arg1)!=0) ? _arg1 : _arg2);
if (_local5 < 0){
_local5 = (_local4.length - 1);
};
if (_local5 >= _local4.length){
_local5 = 0;
};
updateCarStats(_local4[_local5], _arg3);
carSelect.x = (currentCar.body.GetWorldCenter().x * 20);
carSelect.y = ((currentCar.body.GetWorldCenter().y * 20) - 39);
if (_arg3){
addSpeech("Sal", ((currentCar.extraVars.cost == 0)) ? "Free" : currentCar.type);
};
audio.playFX("marker", 1);
}
function gameOver(){
var _local1:Array = ["Geez kid, you just started here! I've never seen such a spectacular failure.", "Geez kid, you just started here! I've never seen such a spectacular failure.", "Pizza delivery just isn't your thing, kid. Get lost!", "Pizza delivery just isn't your thing, kid. Get lost!", "You had a decent go at it, but I can't have you screwing up anymore. Sorry, kid...", "You had a decent go at it, but I can't have you screwing up anymore. Sorry, kid...", "You did pretty well, but overall you just slipped up one too many times...", "You did pretty well, but overall you just slipped up one too many times...", "Not bad at all kid. I have to fire you of course, but maybe one day when you shape up we can try it again.", "You were one of my best, kid! It gives me no pleasure to let you go. Good luck with your next job!", "Ah well, the magic couldn't last forever. Good luck with your new job after you get out of jail!"];
interF.tonyTalk(_local1[level]);
interF.goto("Fired");
stopLooper();
}
function pizzaQualityCheck(_arg1, _arg2){
if (pizzas[_arg2]){
if (_arg1.charAt(0) == "#"){
if (pizzas[_arg2].qual >= Number(_arg1.substr(1))){
return (true);
};
return (false);
} else {
return (false);
};
};
}
function enterPizzeria(_arg1){
stage.focus = this;
deliveryManage();
audio.playMS("PZ");
stopLooper();
interF.newPlayer = true;
interF.goto("Pizzeria");
}
}
}//package game
Section 105
//GameObject (game.GameObject)
package game {
import flash.display.*;
import Box2D.Dynamics.*;
public class GameObject {
var body:b2Body;
var ID:String;
var tile:MovieClip;
public function GameObject(_arg1:String):void{
this.ID = _arg1;
}
public function cleanUp(){
body = null;
tile = null;
}
}
}//package game
Section 106
//GraphicalObject (game.GraphicalObject)
package game {
import flash.display.*;
import game.*;
class GraphicalObject extends GameObject {
public var graphic:MovieClip;
function GraphicalObject(_arg1:String, _arg2:MovieClip):void{
super(_arg1);
this.graphic = _arg2;
}
override public function cleanUp(){
graphic = null;
super.cleanUp();
}
}
}//package game
Section 107
//Input (game.Input)
package game {
import flash.events.*;
import flash.display.*;
import game.*;
class Input {
private var keys:Array;
private var main:Object;
function Input(_arg1:Object):void{
this.main = _arg1;
keys = new Array(0xFF);
var _local2:* = 0;
while (_local2 < keys.length) {
keys[_local2] = false;
_local2++;
};
_arg1.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed, false, 0, true);
_arg1.stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased, false, 0, true);
}
private function keyPressed(_arg1:KeyboardEvent):void{
keys[_arg1.keyCode] = true;
}
private function keyReleased(_arg1:KeyboardEvent):void{
keys[_arg1.keyCode] = false;
main.keyReleased(_arg1.keyCode);
}
public function isPressed(_arg1):Boolean{
return (keys[_arg1]);
}
}
}//package game
Section 108
//Interface (game.Interface)
package game {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
public class Interface extends MovieClip {
public var tonySpeech:MovieClip;
public var Wallet:MovieClip;
public var Pair1of1Boots:MovieClip;
var loadG:Boolean;// = false
public var lvl:TextField;
public var Lollipop:MovieClip;
public var rank:TextField;
public var c1:MovieClip;
public var c2:MovieClip;
public var c3:MovieClip;
public var c4:MovieClip;
public var c5:MovieClip;
public var c6:MovieClip;
public var bt_start:SimpleButton;
public var c9:MovieClip;
public var c7:MovieClip;
public var c8:MovieClip;
public var Ring:MovieClip;
public var debug:TextField;
var revealMax:int;// = 0
public var title:TextField;
var cChar:String;// = ""
public var bt_Leave:SimpleButton;
public var saveClip:MovieClip;
public var txt:TextField;
public var Record:MovieClip;
var cAction:String;
public var Flower:MovieClip;
public var Feather:MovieClip;
public var Briefcase:MovieClip;
public var score:TextField;
var talkScript:Array;
public var ret:MovieClip;
var newPlayer:Boolean;// = false
public var bt_scores:SimpleButton;
public var Watch:MovieClip;
public var pd1:MovieClip;
public var pd2:MovieClip;
public var pd3:MovieClip;
public var money:TextField;
public var Teddy1Bear:MovieClip;
public var bt_instr:SimpleButton;
var scriptIndex:int;// = 0
public var alertClip:MovieClip;
public var time:TextField;
public var fps:TextField;
public var hud:MovieClip;
public var interX:MovieClip;
public var quality:TextField;
public var Donut:MovieClip;
public var bt_bug:SimpleButton;
public var tonyTxt:TextField;
public var Gold1Brick:MovieClip;
var currentMarker:MovieClip;
var newChar:Boolean;
public var nam:TextField;
public var hood:TextField;
public var exit:MovieClip;
var textSpeed:int;// = 3
public var bt_more:SimpleButton;
public var bt_Cancel:SimpleButton;
public var total:TextField;
public var Camera:MovieClip;
var revealCount:int;// = 0
var timer:Timer;
var cDialogue:String;
public var extraText:MovieClip;
public var map:MovieClip;
public var Drums:MovieClip;
public var tonyAlert:MovieClip;
var markers:Array;
public var Goblet:MovieClip;
public var msg:MovieClip;
public var num:TextField;
var current:String;
public var Pair1of1Dice:MovieClip;
var alertActive:Boolean;// = false
public var bt_options:SimpleButton;
public var bt_Accept:SimpleButton;
var doubleCheck:int;// = 0
var main:Object;
public var who:TextField;
public var p1:MovieClip;
public var p2:MovieClip;
public var p3:MovieClip;
public var c10:MovieClip;
var revealEnd:Boolean;// = false
public var cap:TextField;
var chars:Object;
public var Pill1Bottle:MovieClip;
public var address:TextField;
public var Clock:MovieClip;
public var tonyChar:MovieClip;
public var Magic1Brownie:MovieClip;
public var Purse:MovieClip;
public function Interface(_arg1){
markers = [];
super();
addFrameScript(0, frame1, 9, frame10, 19, frame20, 29, frame30, 40, frame41, 50, frame51, 60, frame61, 70, frame71, 75, frame76, 79, frame80, 200, frame201);
this.main = _arg1;
var _local2:* = new Chars();
chars = _local2.chars;
tonyAlert.visible = false;
}
public function instrNext(_arg1){
interX.play();
}
function startNew1(_arg1){
if (((!((main.savedGame.data.score1 == undefined))) && (!((doubleCheck == 1))))){
doubleCheck = 1;
interX.savedInfo.text = "This will erase slot 1! Click again to confirm...";
interX.blinker.play();
return;
};
main.saveNum = 1;
loadG = false;
initScreen();
}
function startNew3(_arg1){
if (((!((main.savedGame.data.score3 == undefined))) && (!((doubleCheck == 3))))){
doubleCheck = 3;
interX.savedInfo.text = "This will erase slot 3! Click again to confirm...";
interX.blinker.play();
return;
};
main.saveNum = 3;
loadG = false;
initScreen();
}
public function yesKey(){
if (cDialogue == "YES / NO"){
main.interYes();
};
}
function startNew2(_arg1){
if (((!((main.savedGame.data.score2 == undefined))) && (!((doubleCheck == 2))))){
doubleCheck = 2;
interX.savedInfo.text = "This will erase slot 2! Click again to confirm...";
interX.blinker.play();
return;
};
main.saveNum = 2;
loadG = false;
initScreen();
}
function scores(_arg1){
navigateToURL(new URLRequest(((((("http://highscores.adultswim.com/highscores/index.jsp?game=1856&cid=GAME_Ext_" + main.gameName) + "_") + main.domainSTR) + main.gameState) + "_hs")));
trace(((((("http://highscores.adultswim.com/highscores/index.jsp?game=1856&cid=GAME_Ext_" + main.gameName) + "_") + main.domainSTR) + main.gameState) + "_hs"));
}
function processPassword(){
var _local4:*;
if (totalMods() == 3){
return;
};
var _local1:String = interX.pass.text.toLowerCase();
var _local2:String = interX.currentMods.text;
var _local3:Boolean;
for (_local4 in main.mods) {
if (_local1 == _local4){
_local3 = true;
if (!main.mods[_local4]){
interX.pass.text = "";
main.mods[_local4] = true;
updateModText();
};
break;
};
};
if (!_local3){
interX.pass.text = "";
};
}
function checkSave2(_arg1){
interX.savedInfo.text = ((main.savedGame.data.score2)!=undefined) ? "Saved game exists in this slot. Click to erase and start new..." : "-Empty-";
}
function checkSave3(_arg1){
interX.savedInfo.text = ((main.savedGame.data.score3)!=undefined) ? "Saved game exists in this slot. Click to erase and start new..." : "-Empty-";
}
function selectExit(){
hideDeliveryInfo();
currentMarker.HL.visible = false;
currentMarker = exit;
exit.gotoAndPlay(2);
}
function initPizzeria(){
var _local1:*;
var _local2:*;
main.kongScore();
main.hideHud();
markers = [];
tonyAlert.visible = false;
exit.exit = true;
alertClip.gotoAndStop(1);
alertActive = false;
hideDeliveryInfo();
bt_Accept.addEventListener(MouseEvent.CLICK, acceptRequest, false, 0, true);
bt_Cancel.addEventListener(MouseEvent.CLICK, cancelDelivery, false, 0, true);
bt_Leave.addEventListener(MouseEvent.CLICK, leavePizzeria, false, 0, true);
bt_bug.addEventListener(MouseEvent.CLICK, bug, false, 0, true);
for (_local1 in main.pizzas) {
plotMarker(_local1, main.pizzas[_local1].num, true);
};
for (_local2 in main.pizzaQ) {
plotMarker(_local2, main.pizzaQ[_local2].num, false);
};
tonySilent();
findNextMarker(1, 0);
if ((((main.delTotal > 499)) && (!(main.retired)))){
main.retired = true;
main.kongRetired();
ret.visible = true;
Game.car.origAccel = (Game.car.origAccel * 1.5);
tonyChar.gotoAndPlay("angry");
} else {
ret.visible = false;
};
updateCap();
}
function updateCap(){
cap.htmlText = (("Pizzas in Car: " + main.getTotalPizzas()) + "<br>");
cap.htmlText = (cap.htmlText + ("Current Capacity: " + main.carTypes[Game.car.type].cap));
}
function updateModText(){
var _local1:*;
interX.currentMods.text = "";
if (totalMods() == 0){
interX.bt_removeMods.visible = false;
} else {
interX.currentMods.appendText("Current Mods: ");
interX.bt_removeMods.visible = true;
};
for (_local1 in main.mods) {
if (main.mods[_local1]){
interX.currentMods.appendText((_local1.toString() + " "));
};
};
}
function cleanMap(){
var _local1:int = map.numChildren;
var _local2:int;
while (_local2 < _local1) {
map.removeChild(map.getChildAt(0));
_local2++;
};
}
function frame10(){
stop();
txt.text = "";
initTalk();
}
function acceptRequest(_arg1){
if (ret.visible){
ret.visible = false;
return;
};
if (currentMarker.exit){
leavePizzeria(0);
return;
};
if (!currentMarker.act){
if ((main.getTotalPizzas() + currentMarker.num) > main.carTypes[Game.car.type].cap){
tonySpeak("Sorry kid, your car can't take this request right now.... too many pizzas!", "angry");
} else {
currentMarker.act = true;
currentMarker.gotoAndStop(2);
main.acceptDelivery(currentMarker.who, currentMarker.num);
bt_Accept.visible = false;
bt_Cancel.visible = true;
showDeliveryInfo(currentMarker);
updateCap();
main.audio.playFX("accept", 1);
findNextMarker(1, 0, true);
if ((main.getTotalPizzas() + main.lowestPizzaNum()) > main.carTypes[Game.car.type].cap){
selectExit();
};
if (main.newGame){
main.ngc = 1;
tonySpeak("Nice work! Later on when you have multiple orders, select them with the <font color='#3ECC3E'>ARROW</font> keys or <font color='#3ECC3E'>MOUSE</font>. For now, just click the <font color='#3ECC3E'>EXIT</font> button to make your first delivery.", "explain");
};
};
};
}
function frame1(){
stop();
}
function showDeliveryInfo(_arg1:MovieClip){
hideDeliveryInfo();
if (currentMarker != null){
if (currentMarker.HL){
currentMarker.HL.visible = false;
};
};
_arg1.HL.visible = true;
title.text = (_arg1.act) ? "ACTIVE DELIVERY:" : "DELIVERY REQUEST:";
who.text = main.chars[_arg1.who].nam;
address.htmlText = (address.htmlText + ((((main.tilePos[_arg1.who][0] * 10) + " E x ") + (main.tilePos[_arg1.who][1] * 10)) + " S<br>"));
if (main.chars[_arg1.who].building != null){
address.htmlText = (address.htmlText + (main.chars[_arg1.who].building + "<br>"));
};
address.htmlText = (address.htmlText + (main.chars[_arg1.who].hood + "<br>"));
num.text = _arg1.num;
currentMarker = _arg1;
if (main.newGame){
if (main.ngc == 0){
tonySpeak("So you wanna work for Uncle Tony, eh? Well, just hit <font color='#3ECC3E'>ENTER</font> to accept the current order on the map, or click it with the <font color='#3ECC3E'>MOUSE</font>. Order info appears in the upper right.", "explain");
} else {
tonySpeak("Nice work! Later on when you have multiple orders, select them with the <font color='#3ECC3E'>ARROW</font> keys or <font color='#3ECC3E'>MOUSE</font>. For now, just click the <font color='#3ECC3E'>EXIT</font> button to make your first delivery.", "explain");
};
} else {
if (main.chars.Tony[_arg1.who]){
tonySpeak(main.chars.Tony[_arg1.who], "chat");
} else {
tonySilent();
};
};
if (_arg1.act){
bt_Cancel.visible = true;
} else {
bt_Accept.visible = true;
};
}
function process(_arg1:String, _arg2:String){
var _local3 = "";
var _local4:Array = _arg1.split(_arg2);
var _local5:int;
while (_local5 < _local4.length) {
_local3 = (_local3 + (_local4[_local5] + " "));
_local5++;
};
return (_local3.substr(0, (_local3.length - 1)));
}
function checkSave1(_arg1){
interX.savedInfo.text = ((main.savedGame.data.score1)!=undefined) ? "Saved game exists in this slot. Click to erase and start new..." : "-Empty-";
}
function bug(_arg1){
navigateToURL(new URLRequest(((((("http://games.adultswim.com?cid=GAME_Ext_" + main.gameName) + "_") + main.domainSTR) + main.gameState) + "_home")));
trace(((((("http://games.adultswim.com?cid=GAME_Ext_" + main.gameName) + "_") + main.domainSTR) + main.gameState) + "_home"));
}
function adjSFX(_arg1){
main.sfxVolume++;
if (main.sfxVolume > 3){
main.sfxVolume = 0;
};
interX.sfx.gotoAndStop((main.sfxVolume + 1));
main.audio.playFX("marker", 1);
}
function removeMods(_arg1){
var _local2:*;
for (_local2 in main.mods) {
main.mods[_local2] = false;
};
updateModText();
}
function frame20(){
stop();
nam.text = "";
address.text = "";
hood.text = "";
num.text = "";
quality.text = "";
initPause();
}
public function enterKey(){
if (!revealEnd){
txt.appendText(cDialogue.substring(revealCount, revealMax));
endReveal();
} else {
if (cDialogue != "YES / NO"){
nextTalkScriptAction();
};
};
}
function initMap(){
var _local1:*;
var _local2:carDot2;
for (_local1 in main.pizzas) {
plotMarker2(_local1, main.pizzas[_local1].num);
};
_local2 = new carDot2();
map.addChild(_local2);
_local2.x = (((main.carX - 5) * 2) * 0.875);
_local2.y = ((main.carY - 5) * 2);
}
function cancelDelivery(_arg1){
currentMarker.act = false;
currentMarker.gotoAndStop(1);
main.reverseDelivery(currentMarker.who, currentMarker.num);
bt_Accept.visible = true;
bt_Cancel.visible = false;
updateCap();
main.audio.playFX("accept", 1);
findNextMarker(1, 0);
}
function endReveal(){
revealEnd = true;
txt.htmlText = (txt.htmlText + ((cChar)=="MSG") ? "</font><br>" : "<br>");
removeEventListener(Event.ENTER_FRAME, revealText);
if (talkScript[0] != null){
if (talkScript[0][0] == "MSG"){
nextTalkScriptAction();
};
};
}
function plotMarker(_arg1, _arg2, _arg3){
var _local4:* = new DeliveryMarker();
_local4.HL.visible = false;
map.addChild(_local4);
_local4.gotoAndStop((_arg3) ? 2 : 1);
_local4.numClip.gotoAndStop(_arg2);
_local4.x = (main.tilePos[_arg1][0] - 2);
_local4.y = (main.tilePos[_arg1][1] - 8);
_local4.who = _arg1;
_local4.num = _arg2;
_local4.act = _arg3;
_local4.BT.addEventListener(MouseEvent.ROLL_OVER, showDeliveryInfoPre, false, 0, true);
_local4.BT.addEventListener(MouseEvent.CLICK, acceptRequest, false, 0, true);
markers.push(_local4);
}
function revealText(_arg1:Event){
var _local2:* = 0;
while (_local2 < textSpeed) {
txt.appendText(cDialogue.charAt(revealCount));
revealCount++;
_local2++;
};
if (revealCount > revealMax){
endReveal();
};
}
function options(_arg1){
interX.gotoAndStop("Options");
}
function frame30(){
stop();
initMap();
}
function endReveal2(){
revealEnd = true;
removeEventListener(Event.ENTER_FRAME, revealText);
}
function talk(_arg1, _arg2){
newChar = !((_arg1 == cChar));
cChar = _arg1;
cAction = _arg2;
if (current != "Talk"){
goto("Talk");
} else {
initTalk();
};
}
function startTalkScript(_arg1){
talkScript = _arg1;
scriptIndex = 0;
nextTalkScriptAction();
}
function frame41(){
stop();
initPizzeria();
}
function keyPressed(_arg1){
switch (_arg1){
case "R":
findNextMarker(1, 0);
break;
case "L":
findNextMarker(-1, 0);
break;
case "U":
findNextMarker(0, -1);
break;
case "D":
findNextMarker(0, 1);
break;
case "E":
acceptRequest(0);
break;
case "S":
leavePizzeria(0);
break;
};
}
function frame51(){
stop();
initFired();
}
function nextTalkScriptAction(){
if (talkScript.length == 0){
main.nextAct();
} else {
if (talkScript[0][0] == "CLR"){
clearText();
} else {
talk(talkScript[0][0], talkScript[0][1]);
talkScript.shift();
};
};
}
public function initChoice(){
}
function initPause(){
var _local2:String;
var _local3:*;
var _local1:Object = main.inv;
for each (_local2 in _local1.allItems) {
if (_local1.exists(_local2)){
this[_local2].gotoAndStop(_local2);
};
};
rank.text = main.getRank();
score.text = main.score;
money.text = _local1.money;
time.text = getTime();
total.text = main.delTotal;
lvl.text = main.pizzaLvls[(main.level + 1)];
for each (_local3 in main.pizzas) {
nam.htmlText = (nam.htmlText + (main.chars[_local3.nam].nam + "<br>"));
address.htmlText = (address.htmlText + ((((main.tilePos[_local3.nam][0] * 10) + "E<font color='#FFCC00'> x </font>") + (main.tilePos[_local3.nam][1] * 10)) + "S<br>"));
hood.htmlText = (hood.htmlText + (main.chars[_local3.nam].hood + "<br>"));
num.htmlText = (num.htmlText + (_local3.num + "<br>"));
quality.htmlText = (quality.htmlText + (_local3.qual + "<br>"));
};
}
function leavePizzeria(_arg1){
bt_Accept.removeEventListener(MouseEvent.CLICK, acceptRequest);
bt_Leave.removeEventListener(MouseEvent.CLICK, leavePizzeria);
bt_bug.removeEventListener(MouseEvent.CLICK, bug);
cleanMap();
currentMarker = null;
main.startLooper();
main.audio.playMS("MT");
main.resumeControl();
main.showHud();
main.updateCap();
goto("Game");
if (((main.newGame) && (!((main.ngc == 0))))){
tonyTalk("Using the <font color='#3ECC3E'>RADAR</font> in the upper right, drive toward the green dot. The color and size of the dot indicates pizza quality and distance from you.");
};
}
public function noKey(){
if (cDialogue == "YES / NO"){
main.interNo();
};
}
function frame61(){
stop();
initTitle();
}
function addZero(_arg1:int){
return (String((((_arg1 < 10)) ? "0" : "" + _arg1)));
}
function instr(_arg1){
interX.gotoAndStop("Instr");
}
function initReveal(){
var _local1:* = cDialogue.split("_");
if (_local1.length == 1){
cDialogue = _local1[0];
} else {
cDialogue = _local1[1];
main.currentTile.char.gotoAndPlay(_local1[0]);
};
if (((newChar) && (!((cChar == "MSG"))))){
txt.htmlText = (txt.htmlText + (("<font color='#FFCC00'>" + cChar) + ":</font><font color='#FFFFFF'> "));
};
revealCount = 0;
revealEnd = false;
revealMax = cDialogue.length;
addEventListener(Event.ENTER_FRAME, revealText, false, 0, true);
}
function frame71(){
play();
}
function loadSaved3(_arg1){
if (main.savedGame.data.score3 != undefined){
main.saveNum = 3;
loadG = true;
initScreen();
};
}
function totalMods():int{
var _local2:*;
var _local1:int;
for each (_local2 in main.mods) {
if (_local2){
_local1++;
};
};
return (_local1);
}
function loadSaved1(_arg1){
if (main.savedGame.data.score1 != undefined){
main.saveNum = 1;
loadG = true;
initScreen();
};
}
function loadSaved2(_arg1){
if (main.savedGame.data.score2 != undefined){
main.saveNum = 2;
loadG = true;
initScreen();
};
}
function closeInterX(_arg1){
main.audio.musicVol(1);
interX.bt_close.removeEventListener(MouseEvent.CLICK, closeInterX);
interX.gotoAndStop(1);
if (interX.bt_back){
interX.bt_back.removeEventListener(MouseEvent.CLICK, instrBack);
interX.bt_next.removeEventListener(MouseEvent.CLICK, instrNext);
};
}
function titleLoop(_arg1){
var _local6:String;
var _local7:String;
var _local8:Boolean;
var _local9:Boolean;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local2:Array = ["p1", "p2", "p3"];
var _local3:Array = ["c1", "c2", "c3", "c4", "c5"];
var _local4:Array = ["c6", "c7", "c8", "c9", "c10"];
var _local5:Array = ["pd1", "pd2", "pd3"];
for each (_local6 in _local5) {
_local12 = this[_local6];
if (Math.random() < 0.005){
if (_local12.currentFrame == 1){
_local12.play();
};
};
};
for each (_local7 in _local2) {
_local13 = this[_local7];
if (Math.random() < 0.015){
_local13.gotoAndStop(main.rand(1, 10));
};
};
_local8 = true;
_local9 = true;
for each (_local10 in _local3) {
if ((((this[_local10].currentFrame > 1)) && ((this[_local10].currentFrame < 20)))){
_local8 = false;
break;
};
};
if (_local8){
for each (_local10 in _local3) {
_local11 = this[_local10];
if (Math.random() < 0.01){
if (_local11.currentFrame == 1){
_local11.play();
};
};
};
};
for each (_local10 in _local4) {
if ((((this[_local10].currentFrame > 1)) && ((this[_local10].currentFrame < 20)))){
_local9 = false;
break;
};
};
if (_local9){
for each (_local10 in _local4) {
_local11 = this[_local10];
if (Math.random() < 0.01){
if (_local11.currentFrame == 1){
_local11.play();
};
};
};
};
}
function frame80(){
play();
}
function plotMarker2(_arg1, _arg2){
var _local3:* = new DeliveryMarker2();
map.addChild(_local3);
_local3.numClip.gotoAndStop(_arg2);
_local3.x = (((main.tilePos[_arg1][0] - 4) * 2) * 0.875);
_local3.y = ((main.tilePos[_arg1][1] - 2) * 2);
_local3.qual.gotoAndStop(main.getQuality(main.pizzas[_arg1].qual));
}
function initTitle(){
main.gameState = "_startScreen";
alertClip.gotoAndStop(1);
alertActive = false;
main.audio.playMS("TT");
hud.visible = false;
tonyAlert.visible = false;
bt_start.addEventListener(MouseEvent.CLICK, startScreen, false, 0, true);
bt_options.addEventListener(MouseEvent.CLICK, options, false, 0, true);
bt_instr.addEventListener(MouseEvent.CLICK, instr, false, 0, true);
bt_scores.addEventListener(MouseEvent.CLICK, scores, false, 0, true);
bt_more.addEventListener(MouseEvent.CLICK, more, false, 0, true);
addEventListener(Event.ENTER_FRAME, titleLoop, false, 0, true);
if (!hud.bt_bug.hasEventListener(MouseEvent)){
hud.bt_bug.addEventListener(MouseEvent.CLICK, bug, false, 0, true);
};
}
function clearText(){
if (txt != null){
txt.text = "";
};
cChar = "";
talkScript.shift();
nextTalkScriptAction();
}
function endTimer(_arg1){
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, endTimer);
timer = null;
tonyAlert.visible = false;
if (main.ngc == 2){
main.ngc = 3;
tonyTalk("Use the <font color='#3ECC3E'>SPACEBAR</font> to pause the game and check your inventory / current orders. Also, use the <font color='#3ECC3E'>M KEY</font> to bring up a full screen map of the city.");
};
}
function hideDeliveryInfo(){
num.text = "";
who.text = "";
title.text = "";
address.text = "";
bt_Accept.visible = false;
bt_Cancel.visible = false;
}
function frame201(){
gasDone();
stop();
}
public function initStart(){
main.audio.musicVol(0.5);
interX.bt_close.addEventListener(MouseEvent.CLICK, closeInterX, false, 0, true);
interX.bt_startNew1.addEventListener(MouseEvent.ROLL_OVER, checkSave1, false, 0, true);
interX.bt_startNew1.addEventListener(MouseEvent.ROLL_OUT, clearSaveInfo, false, 0, true);
interX.bt_startNew1.addEventListener(MouseEvent.CLICK, startNew1, false, 0, true);
interX.bt_startNew2.addEventListener(MouseEvent.ROLL_OVER, checkSave2, false, 0, true);
interX.bt_startNew2.addEventListener(MouseEvent.ROLL_OUT, clearSaveInfo, false, 0, true);
interX.bt_startNew2.addEventListener(MouseEvent.CLICK, startNew2, false, 0, true);
interX.bt_startNew3.addEventListener(MouseEvent.ROLL_OVER, checkSave3, false, 0, true);
interX.bt_startNew3.addEventListener(MouseEvent.ROLL_OUT, clearSaveInfo, false, 0, true);
interX.bt_startNew3.addEventListener(MouseEvent.CLICK, startNew3, false, 0, true);
interX.bt_loadSaved1.addEventListener(MouseEvent.ROLL_OVER, checkLoad1, false, 0, true);
interX.bt_loadSaved1.addEventListener(MouseEvent.ROLL_OUT, clearSaveInfo, false, 0, true);
interX.bt_loadSaved1.addEventListener(MouseEvent.CLICK, loadSaved1, false, 0, true);
interX.bt_loadSaved2.addEventListener(MouseEvent.ROLL_OVER, checkLoad2, false, 0, true);
interX.bt_loadSaved2.addEventListener(MouseEvent.ROLL_OUT, clearSaveInfo, false, 0, true);
interX.bt_loadSaved2.addEventListener(MouseEvent.CLICK, loadSaved2, false, 0, true);
interX.bt_loadSaved3.addEventListener(MouseEvent.ROLL_OVER, checkLoad3, false, 0, true);
interX.bt_loadSaved3.addEventListener(MouseEvent.ROLL_OUT, clearSaveInfo, false, 0, true);
interX.bt_loadSaved3.addEventListener(MouseEvent.CLICK, loadSaved3, false, 0, true);
interX.bt_loadSaved1.alpha = ((main.savedGame.data.score1)!=undefined) ? 1 : 0.25;
interX.bt_loadSaved1.enabled = !((main.savedGame.data.score1 == undefined));
interX.bt_loadSaved2.alpha = ((main.savedGame.data.score2)!=undefined) ? 1 : 0.25;
interX.bt_loadSaved2.enabled = !((main.savedGame.data.score2 == undefined));
interX.bt_loadSaved3.alpha = ((main.savedGame.data.score3)!=undefined) ? 1 : 0.25;
interX.bt_loadSaved3.enabled = !((main.savedGame.data.score3 == undefined));
}
function clearSaveInfo(_arg1){
if (interX){
interX.savedInfo.text = "";
};
}
function frame76(){
stop();
startGame();
}
public function endAlert(){
alertActive = false;
}
function getTime(){
var _local1:Date = new Date(0, 0, 0, 0, 0, (Game.frame / 60), 0);
var _local2:int = _local1.getHours();
var _local3:int = _local1.getMinutes();
var _local4:int = _local1.getSeconds();
return (String(((((_local2 + ":") + addZero(_local3)) + ":") + addZero(_local4))));
}
public function tonyTalk(_arg1:String){
if (currentLabel == "Fired"){
return;
};
alertClip.gotoAndStop(1);
alertActive = false;
if (timer){
timer.stop();
timer.removeEventListener(TimerEvent.TIMER, endTimer);
timer = null;
};
timer = new Timer((_arg1.length * 50), 1);
timer.addEventListener(TimerEvent.TIMER, endTimer, false, 0, true);
timer.start();
tonyAlert.visible = true;
tonyAlert.txt.htmlText = _arg1;
}
function more(_arg1){
navigateToURL(new URLRequest(((((("http://games.adultswim.com/?cid=GAME_Ext_" + main.gameName) + "_") + main.domainSTR) + main.gameState) + "_more")));
trace(((((("http://games.adultswim.com/?cid=GAME_Ext_" + main.gameName) + "_") + main.domainSTR) + main.gameState) + "_more"));
}
function alert(_arg1:String, _arg2:String=null, _arg3:Boolean=false){
if (((!(alertActive)) || (_arg3))){
alertClip.alertClip2.alertTxt.htmlText = (_arg2) ? process(_arg1, _arg2) : _arg1;
alertClip.gotoAndPlay(((_arg1 == "NITRO!")) ? "nitro" : 2);
alertActive = _arg3;
};
}
function startGame(){
main.startGame(loadG);
}
public function initOptions(){
interX.bt_removeMods.addEventListener(MouseEvent.CLICK, removeMods, false, 0, true);
updateModText();
interX.bt_close.addEventListener(MouseEvent.CLICK, closeInterX, false, 0, true);
interX.btn_music.addEventListener(MouseEvent.CLICK, adjMusic, false, 0, true);
interX.btn_sfx.addEventListener(MouseEvent.CLICK, adjSFX, false, 0, true);
interX.music.gotoAndStop((main.musicVolume + 1));
interX.sfx.gotoAndStop((main.sfxVolume + 1));
}
public function goto(_arg1){
current = _arg1;
gotoAndStop(_arg1);
}
function startScreen(_arg1){
main.gameState = "_game";
if (main.saveNum == 0){
main.saveNum = 1;
loadG = false;
initScreen();
} else {
interX.gotoAndStop("Start");
};
}
function tonySilent(){
switch (main.rand(1, 8)){
case 1:
tonyTxt.text = "Don't forget to save your game with the S key!";
break;
case 2:
tonyTxt.text = "Gaining rank is a good way to boost your job security.";
break;
case 3:
tonyTxt.text = "Don't forget to check out the cars across the street at Sal's!";
break;
case 4:
tonyTxt.text = "Use the M key to bring up a full screen map.";
break;
case 5:
tonyTxt.text = "Use the X key to apply the handbrake. This can come in very handy sometimes...";
break;
case 6:
tonyTxt.text = "Use the V key to toggle the music and sound effects in the game.";
break;
case 7:
tonyTxt.text = "Use the TAB key to toggle the HUD during gameplay.";
break;
case 8:
tonyTxt.text = "Use the SPACEBAR to pause the game and check out your current inventory and deliveries.";
break;
};
}
function initScreen(){
removeEventListener(Event.ENTER_FRAME, titleLoop);
bt_start.removeEventListener(MouseEvent.CLICK, startScreen);
bt_options.removeEventListener(MouseEvent.CLICK, options);
bt_instr.removeEventListener(MouseEvent.CLICK, instr);
bt_scores.removeEventListener(MouseEvent.CLICK, scores);
bt_more.removeEventListener(MouseEvent.CLICK, more);
main.audio.playMS("PZ");
gotoAndPlay("Init");
}
function findNextMarker(_arg1, _arg2, _arg3:Boolean=false){
var _local4:int;
if (currentMarker){
if (currentMarker.exit){
_local4 = ((((_arg1 == 1)) || ((_arg2 == 1)))) ? 0 : (markers.length - 1);
exit.gotoAndStop(1);
} else {
markers.sortOn(((_arg1)!=0) ? "x" : "y", Array.NUMERIC);
_local4 = markers.indexOf(currentMarker);
_local4 = (_local4 + ((_arg1)!=0) ? _arg1 : _arg2);
if (_local4 < 0){
_local4 = (_arg3) ? (markers.length - 1) : -1;
};
if (_local4 >= markers.length){
_local4 = (_arg3) ? 0 : -1;
};
};
} else {
_local4 = 0;
};
if (_local4 != -1){
showDeliveryInfo(markers[_local4]);
} else {
selectExit();
};
main.audio.playFX("marker", 1);
}
function showDeliveryInfoPre(_arg1:Event){
showDeliveryInfo((_arg1.target.parent as MovieClip));
}
function adjMusic(_arg1){
main.musicVolume++;
if (main.musicVolume > 3){
main.musicVolume = 0;
};
interX.music.gotoAndStop((main.musicVolume + 1));
main.audio.musicVol(1);
}
public function initInstr(){
main.audio.musicVol(0.5);
interX.bt_close.addEventListener(MouseEvent.CLICK, closeInterX, false, 0, true);
interX.bt_back.addEventListener(MouseEvent.CLICK, instrBack, false, 0, true);
interX.bt_next.addEventListener(MouseEvent.CLICK, instrNext, false, 0, true);
}
function initFired(){
main.gameState = "_endScreen";
if (main.retired){
msg.gotoAndPlay(150);
};
bt_scores.addEventListener(MouseEvent.CLICK, scores, false, 0, true);
bt_more.addEventListener(MouseEvent.CLICK, more, false, 0, true);
}
function checkLoad2(_arg1){
if (main.savedGame.data.score2 != undefined){
interX.savedInfo.text = ((("Score: " + main.savedGame.data.score2) + " Rank: ") + main.getRank(2));
};
}
function checkLoad3(_arg1){
if (main.savedGame.data.score3 != undefined){
interX.savedInfo.text = ((("Score: " + main.savedGame.data.score3) + " Rank: ") + main.getRank(3));
};
}
function checkLoad1(_arg1){
if (main.savedGame.data.score1 != undefined){
interX.savedInfo.text = ((("Score: " + main.savedGame.data.score1) + " Rank: ") + main.getRank(1));
};
}
function initTalk(){
tonyAlert.visible = false;
extraText.visible = false;
if (cChar == "MSG"){
cDialogue = cAction;
txt.htmlText = (txt.htmlText + "<font color='#FFCC00'>");
} else {
cDialogue = chars[cChar][cAction];
};
initReveal();
if (main.carBuying){
extraText.txt.text = ("Money: $" + main.inv.money);
extraText.visible = true;
};
}
function tonySpeak(_arg1:String, _arg2:String){
tonyTxt.htmlText = _arg1;
tonySpeech.visible = true;
tonyChar.gotoAndPlay(_arg2);
}
public function instrBack(_arg1){
interX.prevFrame();
}
public function gasDone(){
main.findGas();
gotoAndStop("Game");
}
}
}//package game
Section 109
//Inventory (game.Inventory)
package game {
public class Inventory {
var money:int;
public var inv:Object;
var main:Object;
var specials:Array;
var allItems:Array;
public function Inventory(_arg1){
inv = {};
allItems = ["Feather", "Record", "Donut", "Wallet", "Magic1Brownie", "Pair1of1Dice", "Pill1Bottle", "Teddy1Bear", "Flower", "Pair1of1Boots", "Briefcase", "Camera", "Purse", "Lollipop", "Goblet", "Watch", "Ring", "Gold1Brick", "Drums", "Clock"];
specials = ["Smooch", "Hug", "Nitro", "CopCar"];
super();
this.main = _arg1;
init();
}
public function exists(_arg1){
if (_arg1.charAt(0) == "$"){
if ((money - Number(_arg1.substr(1))) < 0){
return (false);
};
return (true);
//unresolved jump
};
return ((inv[_arg1] > 0));
}
function getHug(){
}
function getCopCar(){
main.copCar = true;
main.switchCar("Cop", "", false);
Game.car.control = false;
main.kong.stats.submit("Cop", 1);
}
function getBrownie(){
}
public function removeFrom(_arg1){
if (_arg1.charAt(0) != "#"){
if (_arg1.charAt(0) == "$"){
main.addMoney((-1 * Number(_arg1.substr(1))));
} else {
var _local2 = inv;
var _local3 = _arg1;
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
};
};
}
function getNitro(){
Game.car.nitroC = 1000;
}
public function init(){
var _local1:String;
for each (_local1 in allItems) {
inv[_local1] = 0;
};
money = 100;
}
function getSmooch(){
}
public function addTo(_arg1){
if (specials.indexOf(_arg1) != -1){
var _local2 = this;
_local2[("get" + _arg1)]();
return;
};
if (_arg1.charAt(0) == "$"){
main.addMoney(Number(_arg1.substr(1)));
} else {
_local2 = inv;
var _local3 = _arg1;
var _local4 = (_local2[_local3] + 1);
_local2[_local3] = _local4;
};
}
}
}//package game
Section 110
//MapData (game.MapData)
package game {
public class MapData {
var txt:String;// = "eNrsfQmSIzuu5FXmAC0zgjvf2erwI5Eg3BkKSiFlVnf/P2NlVgaGQrEoCccORO/+TxD3f+r/cbc/covlH/dPEPnH/8t794/8k110fSFY/PE3L5k+lLI503tPXws3CXfin+ad+8f967GI/7QyFjn9k+yTyosWH6eNhRfP910eovF93ZUn8k3ur5vFx3/kvghYhMfd5uJP5N8l3Q/94/P9Mv9KzchcjCzpfu4gqwfZjGzFSHE4WSQQnemHui/wQ3nBWR4XlSLzZ7ov7je2hXeefkBX8NN6ifwD1u0PyL+ZL/SbhUSLSD+gT/zTpkaLzBcofIFKF/iTbqH1H93f7xrT/QkGmRt+mTuNHybk/mPcf7j7bgqgixBNby+l4YNaQN833KQfv53R4ohO9APffzn74NrO+5Nv931k75Ei3iNVOl5x/P4ntePjz6vvfd9C2CourVsFn3jhT3h7ed5eOdI2ao63kWM+jFs+rFum3P4a5XZnPnugO23P0+jXaPRriHhmEPo9vGv8nJ9DxJ96y/Q0mZ6m0M9W+Fe776uF+cBizm/5bQuh3/yE7Raj8UgqtIcK7SHincq843inON4prvAnhf8Ckf8CkXdX493F97nzCPGfMOQv+y6skE+/4O7X+CPuFqIBRiZo3gBGIciuRopUfi3ecjnQIxbHf/HK8irznz8z9jZ+k/SFvCK0/CNySwFvKXgb2r2Fdm+l45V5jH6gdtgV939p0IwYjve+8N6RBWV4h3jeIcFBcKls9c8Ys8j69AW3XPtVM8utwnKrsNyqZacfiF9kVTZdgdSGTL9Fpp+iZugFOwyMpC94ollfIK1ASCvw5VxbWBQEWTSsS8rcTg1wrAY4VgMei4LFHwm3WHV/hX8levfEiEt7s2ylPSHEXvQz2pTMrLzRAyqDepNVJT3VEFxkBmd1IawbFh+0K0rXH+kq6GOd3NhX/v5D3m93p/EjxorDmbgyE1OWwIoqflvSGyqgpBIY1roIEoE2i13L8sEFRozAiMFWgLAV8FLt/UaXefzQqe+Ryngt+KAmohto1dInTSiOLzwQ3eg9KO2ltqTl75rp584segK/feC3T97Q87H1iQ/ovUolurHUDavUxRvzSy7wsNcC0zVj4q01Fjqm5ltMANJEmz/R5s/Y/BmHd/pPoZ29UadbMJnXIsgEMoMsICvIRlLTEc3SdKuzb/VaCY/f6sEujz8ubc5Cm7mwFlV4Zy8ayvJXf+yz+NjId/qxN0rTfe54kVZkm1/xInRWV9VsEXgReZF4kXlReFF5wY/m+dE8P8Eqo/hxPD+O58fx/DieH8fz43h+HM+PEx5/5Tv4DpKOP/4yMsn7Kb6THkcDyAdWdTF+pyvo6InOoB/7yGj6bqLv5sdz+f5cQz3sd8pjH3WJnCPRmehKdMMVi8PxQtcpdJ1C1yl0nUrfrfTdSt+t9N1K32347h8pt/7DkmdgIgPQYGdd79SwRiKpuSc4iIO8842rUzt7MIA8QOJxVAZIGJlBFpAVZAeJhyh5kPPoAy/uv0yY2IHjQrSnczwdD0RHOifS8UTHEx3PRBc6p9DxSscrHafn75I9T7mOw4LD9CYd6/JEOhwOOEzv1O3NPK1NHE44TG/UNYk89QgcLjhM79aNvjxNPhxuOExv6fGWnt7S4y27gjIP4y29p8N4Sx/oMN6yW0zz8NjmXY3vsiOpvpPonNxp3wWE6xxSnS7umy1XpeMDoJKKkcWihRw5+MlMQlTCt4caRQvPi8CLyIvEi8yLwgsC24dFDRHFZ7UOdg+tqdP331+UnJwK8ea7eDNEcaJfHXT/6iDt53ksSAKyMHEsTFw8CkpbsDBxLEwcCxPHwqSbDeOdHvT9wZIenu8E+eu7/LV36lbGpBPRhWj6DTx919N3PX3X03c9fbdD8PjNumzr1min7zty/Hzngo4F15BKVSXLY1eP482zJlhvMRDIB1L/Iul80O0SPDsZ3vpCmlXxix8Ix/u+VxuHREWNTyIhQCSUI/QJ49rjbzgowcH7514Bbn4e8Hm0gxEHkx1MOJjtYOaD/p86OFy6yW1xgwy3zOOnlhVYCD8WZbNjiZu0f+DKwJLOQyV2+0oIY2ScJLogwGHEyH58MkDGr+Z5mAxfmOELw0K325X7SzPuLw3cb9DlO3SpCiQVG/8BVaAT0YXoZmAhtU2wkO5Cna9WGwMTw2Tjl24Mk41hsjFMtrTiH2AuA+YywVwmmCsLzIEmFnfE4o7Pf2JxT2ydP9dfQzc388NddFBm4/igfqPZVty4Ria7ZCzdXZdwPIMsICvIZuSiabYVecg6j2Sdl2Q6Ykn2JynJdMQCBaRA6ShQNAqUiwqFokJVqlCPKlSiCjWoQvWpuFvF3SruVnG3hrs13K35o45WjwgVWBfzLyEqAexO0eqx+2KZapjRXSBNOhJ9Dljs3DzGHwzSJUZ4S9J0L8g5xBWGsglYtAgEfoHALzD4BQY/5vbM3J6Z24ftlWeIBEDIyFH4WoWvVfhahZCjADkKIUch5BghkYm0RjYA5wZDgRoPtANN2NoIWwmhFqWsKzPDV9zFZSzB3EyTzkRX0N3HNGn6rqfvevqup+8G+u4QfG7SUGYI6vqO7Z7z6EHiaMLRREf7rhyKwzSq3QswO8evh2y/a9TtCGbdaKvBH5Gt8vHGiNev80D0NZjh3S0UmNfDeJmal/njAg6n6efu8WojiQcTOe5ztlNKBJlMp1IILQP15gkNN2m4ycAZUVXnDF0uqDddWj3e9uFNzRtM6Jz/cHn4yeFzEY0jum/BOD/heIb2kLNpDzkzNrAllMsKB7RgJaOwklGEOF3A6UKcLsTpHuwdQEYm74JGf66ClxkoMoPeF9BiQsRnKpfaZFEtL2NPR+zsiJ0dsbMQO/8HYQQK06IldaVnHO8uipRGCK3vBqcLQhihk6LQSYw9fKXIVyJUiqqJNY3L4RuJL8vgNZ42DLuN75H4HoRxY6t3XhqpPZNuoGknvPID3s+PhHghAsEqIVioR63Nyy160to82YtsOw4jUV4EHzN56TM56YeE7gpfhqshV1P4MjSsAg2rQMMq0LAK9LkSWQWDP5LDE5Y0ouGHSVeiG+gRgbCF8MLzout2Q+6NyN38ZB+QuKLOqcm5KHYwRD9T8RioT2DXP8OukUCqDKTKQKoCvaYIyH8LSLZfAboQSG8JpLd8p6wUR/pJYp2j/9ED6yJBsyOm00G5tLCeMb34pnSsPh7vb6xpKIMFMFh5kQtQaVdX2tQ1EB2JTkQTP1Xip0r8VJWf/AwEdj6Rl7lR/bLVGOJhU6jzWbWV3R7fBnp3KstL1UQXgxvuW7UOBsuFFgU+Jt7Pj11kUT7dUVllWN8lQcVZ1GBXwuFEhzMOZzpccLiCbEZGB1JAepABJJ4o4iki7hxxt4i7Rdwt4W4Jd0u4W8LdEu6WcLeEuyXcLeFuCXfLuFvWu800pOnfYFk42C/IQdBNduri+Y8Ptygk9YQkHUtAEmmRRNqQhjO5ZIq0WEykjTSTRxbY8IMU9YhMgdV/zOIGNQ/2n7UfTBCD/QceByEQ+089DkI09h+9qFS2g9EOQlz2P8Q4CEdI/5P03Z/gEklwiSQ8fcIzZzxpxvNlPFXGs2Q8QcZ9M+6WCysCQC+KMHYlWRGlo6VJYc6ScZwl02WDnZbJHILB9Klw5TySxQq6CCJDhYr1FaJ0qOpxSs2zUwEzPPMjovUIJWNx3Pu03+Njv5s9Koco8FDsdCuX4bDD/sSmxE7E9sOew0bD7ppUHkzQNwy0RP7DbnKnmmlk8q8mRHuiA9Fxob2Jn32ylGbfdJnTTgIAGxcaZ772bIcz2ZMKbY7uHfNdUB9kz8fipgfkWt+HPUqFRSaXTCaHcCHAXAyMz8Ez3TwlcDraTI6wUw6JR37uN8JLA8lCIDkPdkTqwXbaP6nYwUJ/6pKIzkQXoivRDThS2lTgGVPkVU6eS4QpUuFW+RBHfqZ0PNTlOwuNDdX/pjGJugkedFJP4qRHMp7SQrQnOjDNGyvSB8U/Kbxj03TFto28rWXXHDTYfFv2TQIIZYCQbYpU6M8f+p9/b2+WwEpnZrOt8KLygo1AYSNQ2AgUNgIlrAvIIokkWNw7HCFX/BJHvAgQMzf8xTYZ2Kq+1Mf/AAsCAo0pq1zp3FtS00W8qwa62Iufzv0le108vpO/w5iDk7XcfDLACQFkwx4KjfDGHfS5qcORQT723Nx+hkkZmJQNkwBU2zokwBJtVtpiqcFLkB3RQrQnmrwKORKdiM5AoZxxvBJn1HSQsSYPm0m9Tz0L27LEJWBEalGqn6tIj5tUcVfVpRG8iQkOg+wtjj1eUy3fTnqQAWQEmUBmkLBOK5SGil+y4W4Nd2u4W8PdGu7WcLeGuzXcbTisvLk9+ruNEHU/YThAlEwgM8gCsoK0R/eKehZY0qMeZMAJerdgecxUPaY5NA7klI6aQqP00L4r5aFaZk125kXOznJssjN/cnaWbZOdeZazs7ybjFTTjJRSJXG3gLsFi8w+RKCR2V4kZDy8atBmZGcY2RlGdoaRnWFkZxjZGUZ2hpE9/s7DRM5aCbIzkVXR6+iiNnLUw8F0vnfGQb0xkEYHQyFCLiPQFGFDASM3ca1qej9Fsja2XXcgTp0MIpTiWpU0OI5xkRuokRdoV2yxxMRIiRyYODW5dwbAIqz9qWr/kYbnTlEN2FKdMYyBlgMQOYCLm4DhABh9bziwkQOXEGP7QEwZQTMjgf+6ij85oqt3Xj8IYyGmN9qi8mkjzX6I/9hwsekesioo/ULib+doJ31hw7RbqKQ8UC3QokiQBRDJABiMMdglQnlIUB6SKQ/QKFKFkmCMoWz8ONgd7yrPD3l2LMOxXx1HG5xfy01pW6evHR1cevjF7n2SyXMn33kiqa0y0jN1Qfs68UmJT6Idz1dqfCXmBb5S4yttuCSM82fuaj/fWR5YnvmpdFLhkxoLUpwkQiexME18UuKTCjhQIOvI3vRIxR5CdApX5uPxpCYyH9d/Fo+BTlJfNknACQPg/UBivat9xuF5XYSH5hZ08XCS6EJ5f8fvKMmIR24vcS/VTrl9tT2DW1g/Bsi4CBln/NtFazGV/KTOPRNL5kY+BnJd9TjZlG1C/oYwri4j5lIs4lIs3lIs2lIMAIpFWoo5yYqKv0mZa66Za67ZPdqEqk7qC76IXnr3bZLIV9JwNWr/DZLxgrDzJOx082YVXCSh3LkUa0zef4Kcp952/wFlLM53+yvZBnkW5BaoNDJQyetBtlFSkokw1OrECBEWTYSlNZpxktVJUowYxtnBkbrwsEf+k1t+7vNdFEDYdfR+y+9dwF2lDz183hf3v3h45E3cF2180i/WdZ4QwjCYHX3S95F9IvNqoS/0ai/iEKmRwZ2mbhpe8Vxv/FBd/UKeNzIoH88ds9dOOmYlBvITaUV3RYGFCS3Qb/kxkHAMJBF7FKN5V15JmQ2rXVIdg795ckGVgwtK90OgkHs3EVXEoAYC/NX9QUW9QX23hn9lb1QwKs7zdq1VinKKOrgHlzmiJueJHfPzGIsEY8JWcLBATiyuT2ambTuQDTclivEPzirdEXopsN9taOOywlxWJy85479YV/5zzHIOXDYX+p3BZcR/nvhPhZsu0jWPrXTPVlLPVucueLZ60aFyl/4wi3jrP3ahvgrllb1X7Awvkei6cJcdXxVCHCYpGEgKnnFatqIEE4lyKhLPWXBxSF+MUhFrBi52HRmDLBAtx80kn4fkCxBywSQfxGEip2ri9DYIuc/5OCdEs2jLFzk03hmS8w13C1HeuNvErjF6JfCo+ZAtV9zK6o670jjuSrOAwEth2aGh6093Hlg41xHnhkVyTv7Ed1b+9OuiX6CzV7es53dehuA75xVNtzUOe2kTFk82oS6ebMIiZBPq4skmHF9Wm1AXTzbh+LLahLpY7ECWozD43CJHQacPZSrTCCCF9mz5uWdHT3+DnLom0HNnoujiABuLc+hbm/AbOzDepDJYQI5Tc4yApkSsVEeBSPcQ6crifoRpihVMFk1ZOM9SJRlrbqFmmu5ISi1ISS1ISB3fGn6gE9HsKeG/+821IN1ny1QS9QiI6rA4p9LxBrrvHD0nODpORdxDSIcpsHGcSrd7Ytw8h2q3A9VoB3rmkOk4PXOgZw70zIGeOdJzRnrOSM8W6dkiPU+k54n0DJGeIdJ9I9030X0T3TfRfRPdN9F9E9030X0T3TfRfRPdN9N9M903030z3TcjppbpETLq0jI9TUb+cqYHywWH6RkzrPBMj5sbDtOTF8iRQi9RBIfpfQqqhAu9WglQpKojRYrzObinm3D2kXD60SMe57lZHX1S2afwkDm5fOpvZzRnBK/DJZh10V2C+YjbkU5SDkr5IqJzfOqVGtelUNJFl0JjgRDaFatqNlP5IvYf0o2hOVLsKFLsKI6Cnt7aSKDeoZ4neqh33tQ70vnUdosj561fOK4aGjA9IzNp1z6wZKhthckpDE6QvjWoXTvMPzfBpkiWjnUDD6XjG+hANMXpY6TjmegKOtE1E10z0XcTfTfRd7W3hlcax+k6jD+JwYUAhUCEgIPAggCCQGH6MSqOVqAGewsjhx6MxDOM4L/XsnQCBX8KCgsO9Gvno7qYWXO0+D4BhbOvCcLXaI2gSDKVR7/E4fNZ1CBTW1CvuiJQRxZd0eiNP9RNNd/A5LX3BW9wjh4nPlKvlaDdR9oXm4jAyFbKjrKVsnvtxcm3QM2QArVJY/UvOuCKg8q3oI1pf35qfxQhP4+LUzQ8W2ojV3jmiROFJFNZGxxbVLwLgscfYfhRQ+9QM+JnDzN+GHxKFpAVZDOSw+oORwWkBxlAzmcIS3R9UVIDcCyCTCAzyAKy0iUq8G/fFXFBRi46kbI6kh4VoVMTzaZvZmb2sIQR/o2ZPoJMn4BMn1nqlNGKQpvy1FNNw9m541epnL3jTrJ30PWGbMnsDB4sB8d9moMjyMER5OAIcnBEi2WUTCAzyAKygmyAIsfkw6HtWd0hUKpHJLLGUxdUGs10DJzpGF7jTVnxJrNZOXDFPaPN1GIW3aaQauMH7sxYZYISM31UcSYW6vHs6Tj0GMBQRirjthl0gkaTmeTATuj25QCnB6QyOLV5QlDkCD+EiHO1qEItKuMHH7DUHzqE2uMjpcxPZk+H/klYdw0YJWaWdrStjMTmT2Cf9/LvvZeDvaMv1Oqdw6PeNMmNRN6byIXjrXdxF2bzHpZEjkiTUQEyCgJEt4yzLRPLjAsuW8bqOsIjt2AELYLzM76nfvkX1UBhdW2eCBl4XgRauEALFw8SG1awYQUbVrBhBRtWDLveiKFeFa7J2raFHW/hpIvHq1O35uis1T59Rzd31Ppayu1/3DvZ7k62o5PtYihx1zz5eyRsXD6ikD92ITUoOyhkEyFDgxK2gKXZeZtt6tn4oxytk+o+BkDbyrmudScKeYlJdror+nmgX+ANTlra2QZPTNpez6Zj7bYxheKubGMOgr/d0msbkYvb21O1wUgm07KU7lJWeghtM1izmaLZwud6ZrIzl8h3tKOVKPtWtqtmOvqCnbZM0wMF0XLVjgU3YiG6aAojXr+Dcex6wojdDXqt5eqq1VzoDxa0HtjKb/rPNE96H1NLqPxaODG6mxeuqwgarNHREHLkz2a8NfgQ+cILH5YdHyaKcSVZYminRYEZ6cNtBs+KM8qCbMWCbMWCbCVasCwZNdLRekF+pXtWd5gcM4JRxLLN6bgQt+PTDI0mLxrNCZ9yxRgEADY/lBVhZcWxshJYWRm5/qjtclTbxXSxbeo96sUOio6HouOh6HgoOh6Kjv+H8p4o3kuKzgz9nurXJ0a/cGLUqzTAHxUxRrkF6lYXqNeJMsIDvxeJhPLlgPJllk2oZA6oZA7VJFZACXVACXV05o4UU6EgbX6bB2h/60Z93HA7OWgraPw/icabiHNv7O3XIE/AfgLmBuD72g14ubGXQ1q9VQhaMo18hsTBzCWNtdFCy1LDhez0WYZL/Rov6urR32QpeVtT+6aqTj/w2Gdwkh92VI93K/SdbguBgu5V5RDeITsoa5sQY13ChBwO5LAfh/c4jGf0e9cwWldf8RK7U4exe+c7dlxDNkNLPyki89b9b9SpfeQ5Gp2/6qEyLIiZu6Pt6OSIRMcRKfBdcPvZ7Qpu28SlHElH3xStHQWez/IjsfYEnn2xwr5Y+YUq0NiTe8AHMs3X+4l+8dhOrd9B1ScDIFKgJ5IvhI5nOv5WjxBo+2La/nvG8firCDWPmbFwR7Fwjn87in9zzNtRzBt4O2M5jo4L0X6JFeF4IHoXK6LnHAnCepyeeYkn0fNHen6OM0V6l0jvssSf6F0SvcsSl6J3SfQuS7yKnj/RMy9xLHrmRM/M8a1Ez5zombdxL3r+TM+/xMPo+TM9f++gMjAg0+P3bip6mN6kg+SS+Kvn0Fv1nCg9TC/Y+0jpYXq/3qlND9Or9q5t43Cht+sd3PQwvehz0N4tQfvQMfSBJ80mDlkwDnZZxWyC1QH/SFssGq0fMOnWFOXnAlpzq3u41fM7tzrlbOV3bnUPt3p+4VY/L4NFZO9YEYtgnWfHO+J2p/leQofFnP6BSoZCABaOaiAFw1H4Cn0J9CJAHKtLiwAppDt1dUlbRWiYPbB3PbJ3/U3mZ4w3n6EvWf2//Cug781WfFAMP1AMPxR2Nr2O7W2aIp7H/La5npHbvZ7paOY3ElipFAnMsFIpjreo+dQY9hEeQaOTZwl1mtOpLX81ncvIiLIIzfTMbc30dBcyPcd3Psv0HN/p2bWhQ4QqjT0TWyYMPhKBlvoHzwmhXhNCI2VcHxOIvLp8gEuk3BEuDd3ARV0Y7xwQy0hGLOqecpZKMHJP7/dS3hqgVV/mFdDZBRE+h2ig0Cmv0gyidY2xs/O6sEu+yDqI5pMI/Y/eAZAWnheBF5EXiRYhkn5bF13XdbVy6rqTLiM1Neiip6aGZzXYzdMs+2m2UDnoxKQtk2mp1b7BBjfP/l2FaG5s/bkPI90CddE5oB670s1FgcZ1WzuyGUSEZnbkqlQXa3CtbQAq6dSVdOd3RqeD0XnEtmF/BgDae436dYnJNeyykhLHJSVhW1ISXpaUuHmanNeXhG77ob7Ec32JANXc50CWl5KSMActZ20JdAXJzvHqlVY14cIQ8LGA9gC+nzpQcCPV0I8/v0APskXgReQFg4BKf1us2UuTZtXHL3Tfv3MQT39ieNqnjpOXKrOlj8HiK1pMaSBF1gkhXhtZhjonzM3BId0GCNVjwNzQiHpsSdvFFm4de6U59EWHU775RviBzh8BHQIXQJiuyt3o1Pf+d7ObHaJkwh51i3yVQ+Rrhmoj5wvY4ZcTU7kz15l6M1B/qA4jv12KvwgelcGjMngwRKDq0wMvqi52vP+NRnPolHQonB45j4+4ccVM8eiqQ0BrTYd8gQ89gSyaU8vva62J8WH+BHWOrhzdgyt9sN+BvUMgIV/IoSUk5M88WnImvdGgIAVqUJDIupmcG4xzhTlXjHOHu7cgXFFHX56RuwGHcLPDo3X0TFw0ElODCvrhl8jkzP7oPdhmw+mCORjosD3wY861KJiPgc7bvmQ+BaMy0JF7II+dgqkZ6NTtCw/QKBiggQ7evjSesYG3x7CUYQDaKcILz4vAi8iLpSXhwzsyP9nrUuXmtSdkx7+dSYhOlqFNnSg0eBfhczwFwGF0RYCeFQBp7LBQ7DBy3tN529pzladAHRv1PdMECbAKL+DZYVry55rIewC65NwxssNVSXNx/+fTVilx59Xow5XzgL3WdNF9r+3Zoil0mhQ6bUWwMCRGV/THcErRxaKTlHXBSgnozvdlltqyumH0ryHGYI8yRhCATZXuknjSgegEeuWgevPOXDC+mttl5IUOvvIVOsapvuFgroSRiT25MC82yswoyJTxSMb2xfaJoAvRI8Ldlfu91RKsUFZdK438KRQpTaf2SU8FSfHIuO0T9jx0WREUon+jLLzoI/rMt6VZbq06S6R9wc/s+rjg7RglpTY59MFo7tnNsTo0An1HAn1n8WSsDB2HStIjY3384527RT/p3C2WqbNYHKasMKsHT8pKXhQXU1Z0BGCytOWQStFFL7oqOpEC6g3ypyPyp1fHK4ezU14ABJbFfx5BNvK43Rg3uCEE94NgOwUNXYP13IfFkj2an4LD3chxVs4v1Ji1UGPWQo1ZCyHLpRwjRQqBJ6OQJ+MtUhxNkzSylrX0VhdvseL3JLZc4PZPXaAb6b2YDEfHgThyD0z7YZGxdV2c53/UJYZx6FoRkrZpGuGrHNjhJ9ZhfTbF/i+Sxqtxn9xNPERzIRlMndBYNge0rGEWo2YQIS6Bkl1OyhMf7uLvyZEkd9d9iFuVGjy27ZL4EfcNHmMmm7RfGS5tZLAfvWk+577ck1bjz3Tnc/layVXnyHPrpbATr2ydeMKyMk3fybDl1XfizpRfk5XMpUumSib5yLKykawMOJ7yKu7CMeg4eRSy71smvZavkuTmrXL54SKAR96PYPz4CblV25HrttIs0lSmSD3uY1lo60m/HTApJBVj56QyVeMqcWrDtf/eoyf3mC71Wi8eGe5HafdeRX7vn/PDFSrnrJePGStLFsYHjPdDZnsr0PrrW0WwR+TOcy8ZzRtwdi5mpXtBPu2o/fVqwPqT2l+k7z4F5CZpaZAvgnPCgncRr21d7HIEEBxza45Zd8JNX113whVTWzMmKlp6cKb04IQXTXi7hLfLSH7ICHBm/DUysi2Qb+iRb+iRb+gzoUnG79pLs2J2PwUWaMDJz6kHMiCDoQTwQYm7nhJ3Awm9QDIvhPfW9RneUAVhpArCGNExkfuC0+SDSLM1OGOCpmwkGrKRaMZGomq+FBcayEYZFtRYNY89JbKfossQ5p8h7Hyc7jmwccnzt8A2zkjkpktPukZcaAO/BL0jtMPYR9JBLqAfId7HZv0smG4eR8PqvKOGzOOtt+XOfgHKCEic5c6enXmWl+VR7uxR7uy5rZblZfkr2QhHT0BNmEJgnzxZGqbdtF2eQtpoN+pznIvuc4yvshmSsM0f1kT1ZQGNKLtjqamB32LazOOFZkr9jqr0J4Wbp3ponxbtiGsxTtWgkxQFpCOkRPAwciMPs1ZWfChx6bbwbEz4D2z3qyHGVD3b8WPxxNN57WJ3kXVHWK80CuuVi4y8do97lZqzhO1osWz5pV2RkbvEnHxWOL3uTxLDVGxRD+7xKYi/lr4H+znSZu2O6ylDPenVvi3il6p+nsWpw06MtCujJ5qaEcdAx8nYjmRsJ0raTJR1kSg5J5GJt5WW0RoBd/1mDOFR3b/NAVta9BqZ9D/zj89ZXXLGOlwtNyUjS8O00MZFmSxyc5HLT0Xje3G4BMQdF4F2h3Tss7R0MsFcFCz6X9cqPEdfSa0WFeEFf+ctt57JpFMGVU9z2jOlxs1NnBCzorv5SHWf3c0jszGdFOmkQnOZh6p2XaQcWDbdfCCWpfo+H0h9jge5M3k5L7xs4gatY9Ut5ofybCecMHvKEEdbEeTJyxVMMWUVFZ/vWgLNjBqHjJqwZNS8FV5LAXnGIOfnoLNmxD7zWtYiE9NCX0WRN2yX50y8z1nwgut5DM24s5B05Q1NaV5IuJEy+sh0mDM0RBcfirsDNwl8zXls1OFrFl0wmyXur7rKP9i63Qk9xd+eg0gRyzcp8A17WJwr+4BlIP0CuqCqwPMwMf2OHSjUmirRbyfkHVjmhE0sodSdJpRqj+PxfpZ14ZF18UY26XzHbjCMxAPrmRZm+aOWQo6+i1FLIU1m+capGY1TM/xi84FeOMxiO4XSzsIxDrxJGvtIyPWZ8blmeTIG5fN4r2g/5jbydwpE4X0RzTy0ReJF5sXIQSo9q66NbKPSFTHncZ9hQOp9hgmpFxjeNltkXhReVF40WojjhfDC8yLwgp9A+AlEn6CaNL8verRXQWqw31oktCTFP+YqiFyFovRWsB/MyQV+ulXR67C1Yk4Xi7edo2h9PPj07GVHnr0sfBrn0OcF5obXL3WsHYVrogsNUOQjAC6Dgq5YouWmhVf6W6MtkpZeDZpiX55iXx6dMF441GamWLX0ME4aoySWSDJr287rveZ+Co4C/UCgH1DNUAI4zuRbj+TbvcnLzWG6sPN5qQ33ipl6vPsm7wZw0bhaN4DHgtX4vNB+Rb5k9aWnyPf7Gv3EMbHMldB1WoBaYFBL1uXFTov8SeJF5tMyf2Jw5xnuPOBOOE2mqxgT+wJjH8Y/22mJP8m8KHxa4U8qLxqf1uiTCZGJ03H6aRMvE+NlUryk0wJ/wq8g/ArCrwAkFUbS2Sff+uvs1L1LPozRwaf7KBlVte9/1UVHxmrjMkIZZUOjqtqncOgit5pVO/Q9YOx8iYyGhxmvlj2TFtpZcXYHoGJDfrZg+mtJg6neGiufcAj6xWBjI818L9RZZZeua8i7xcwC6M9anhjG8TBLFXOlcyqd0+h4w/HicLy45XiY1Yu9OPoL48/6dDj06TgUR50rsIUVWE9aayHvyhPMZqWTtSeonZ7tBsZx/5uKp9YpDVR/YefZRIpz0+6iQ8TDuMtq6aWHcZe3OCCrq+Scj6kMMcct01UqPsiVig8u6DN/I+tucaEcshnabWFPxaaBf8Rwuzy9YoZgpZHBpxk/yEnQRISWHnX4R1Y9Z8+2sB7T56x3pieddkj6OI1IMCFclaICtaYqX5k9V0F2rclTP4/XWQ1/3aVCOtC/w5MpFIOQ6zGIN6yKUEN+Yfwk4s6zhCLLSiBDhiZi/aekaHY3T5vdO5KXjjw3aIXghU6nWmEvdLpfxuA88W8UMluEcgLedT9P5ARJ7dCCRyMP1CD9b7P9c0JAdQgDeh5EbrjwlBGgRtNoRivoAShPPRdOu6ydy+x6bGascDLGg4zGBzL6s4yFpyYqfpTwRXTjctMFZa6pJdEgEt1BqrwDKW4udKkM4WkK5SuVYJP2yK4oq18Url+Uq4HO12F/95zatAGWfJh/oMmRiUKpif0dK86URVfwyD7yyD7yCHsaWTn5aLZWGFhTuTCwWjVgXKoBg5UAxqUEMACblrq/YMV+cSn2C8CvpcIvWFlfXMr6AjDOcYVfsDJmPe75eMDxwMeXSbl0PD3NBkOD9rhA6DiO52n0PH+yHKGV4ZQxlHETupFfPEXnseJVZ0pUa3juTjrBYkqJoESI7JcKpydDx18wdPzG0PEbQ8f/xNDZDb338Fx5eK6oo3I9OLGcTfxVJ9aA5mA63erPkmewNYXNmrXCi1XUiJp6EVo0iU5lqkHzOTokBfVtAV+fkdQdkPRiwcanPizqN3g9SWumYrul3+CrRlru3awbaqTl3nWecS/aa9lTagMat0wVFk1tVYfPxUQvTWOPnMYen3Ne61ZKcIGJPyidUx4cPD3dyy0a8+teblE/+0FSmGP9YZvV2GvSndaky/SrP4aWcLF6uAOZv0kjA+6avsh+l4EqYYnvnZl1VOCR4mEIBYqoXns5PLwcx3EB3eHxzPA9jpcojocslVFJDfqU5T21SqEM5smqzKuT9ivfph+0nsKciq9zzmfOxvQ7T5pSJUcr6Mq56DK9x6qzuMiLxIvMi8KL/hONRgjCPCbMY8K2m3BrJ+HWTsI9IIRrLHtC+7zNknDunpPURd6kaZ5mrMshRJaWPEvuZf1KmVtZ1BGLopuEfTBYNFIxmWisC3QF3XPLpzm9ZLzkcJO2MPJOa4F2Qh4aj8RwX4zBPUlkz5Vd1GIluBe5Mk8ZAbsSMsqhObM1ycEbyd+06zz1Dmyeh5A4m201FIY5mmSOGxlkIt0hAEg4bWbRI3jGQiQaA5+ecSQ/Zc1cg5E8DE1H5dyD9kT/5UpOAps9wChLTg3BFlwkdsQR8LR4XiwAcQ4KwiWjchT255VpfleZNnuG9/DlWGj48tCm4fdgoTTUmOqgidRNk3iTYMETfXkZpMn5AyRwTMXYPYM7/WvRXmZ1EQptUGeDNEBU2aDIBjU2yAREhQ0KbNDEGz284VdD22606kZD2Rec3oYq8WDkaindQ2kYFkVc5tUdFYiwsRPAx5alGmbDc9UfhNwta44PMoG4x6oErgRZrAMjhQyFbxQOvwzGeutm+TDfdSmE04aW8rkmomp4onYPHKBWztwrH9q5oaj10L9fnkGDtQqec35Ek6Xx3A5ATmvOrZp1pgP2Eo+iVR29xKOofQB1wz/bCm4DJdWScGdjKpnWgSMjwN8hI92kAgSE7HpppCOQdPck3T15Kjx5Kl5kzp4XoRVLiClIiEFuTEEvO0s2184LSkYcNddppaerpNmo2RBtVGYX5TYfUzAfUzAfUzAfUzAfUzAUUzAUU6biEC1OdIYV4VT+e+33MUvPe/IAmsQgatQ3TUcjzbTVxXuEGNudWjfd/8zlLFzUk53E+oK/VSzkXLH4tDD9r6gMl7WEXS+6yG2d4ratU14jyaQy5PM2EymuxkOPb7ptxClyxCke69lPylUF5aqi5apKYmLmdBiLOoxHE051GA+VSUebKam91UQdxno88/GC44WPVxy3oIHXrspK4mydr6EkHfc47vl4wPHAxyOORz5OjXgrv1bN9AG/V+WXqXiZWtfj4Z/xu40ZsX3wWV/gpMYv2ujt/uR8Qwq2kBN2AesKgFanVoqv3Mo03i6kM/DdFfUm+maib6ZsrXQLBayE9CS/0G91Jrgb0cMeedSha0/QpMj7olA3ab/C3oknppudIaYtIJ5W2vUf2T8BYpG3DhuU+33qu1mdrdN3eUljuqYXyRYZXzhYnvvdeV1Ql4+lcdb75neH2tdI9DJp5gCYlE0jYw4eivhPc26WhOIXIXrpptcM0c9YE2ABTL7Pk8nlJoXMrzIziIUY2ytjm+bV6fCsYcWvNaxMGtZh+l6k6XvaN0+3Uy/HGDs1VXhjx2S2YKlzd8Xy8a498yH0orIcZo9NbSOihyMdTjic6HDG4UyHCw4XOlzn7cNoyiXTAlzjSqY7zuc+KoxKJhy1sHujP0GjP8E+eC8HoNMsOykUOOrOFl81WmR63Ypdw4AXwzFO/JGTdiZi8uAIXNo4zQHFBthdUusiD53dOIysxFi4xFiuGYvjKUaf5JP+npn7e+YjEH6uJA5D0uYk9HLD+kZ9vKgxnjcsPvYjD2XxHrF/Gfbm0h7lMFdOzjN4zyolIldKRCh7r2HOoO1Prq8AzFxMGyzzwl7kc9fxCTRtUoZszDxBlOVCcEIR4daCVV47jCtshcqw5QFVHvDkl9yjjKMFZNULhwlIoR4AaUEeSzAyjOGsInKIV3KIc4oRtxdxpGHJQk8QMvkarGsZV5XFp2Qfqk9bTUgj/St/0w6DNrBT3Lny9H0bUWhMv6kmxYkaYu4jXXyhM3nuIuq5i+j7IQZCTUTdU7PQR670mB4QK+lPcfFEL2ZlB+6ENkqunGDOc4XBU9HWodxgql7eoHoFqzjs2Wm2dns2URr0+0KEN8DVPtS8Xvi5SKvynvxcyYLgPiFGtjPA9qGuJwA8z9/ZFoYxMAIOzzBwTIiwZKAwih4UDsWAbxyu87C63McXN7hmU8CLDQEvBXpYy9MD34pR1ag2qS4vJ9nYTsTITPaEdfMjhTRNRZQBeNK3uI+OcB+d1XKUhfYr3CWaNPoRwnEalWT45wrAdViQ8otV7VqgNp66eTIiI9GJ6ILBOG10LxOFTYJHjtOriuXmAmagi2QGIlFAnsG2zz3ws3rsRbDPnWQDsIJ1ROF5YamvNbepnx1aOy01tXTaMmjqOGBVNBWUFLSl2F97yIpOzusqvdioYc0KWrJE29rVZl/heoKF3R2ntWalD2XWWrOiYQ05IGZxH9uq/TdU/Y6K//fZANet0zeYtrFHZ6b2AdQIybRzTTgg2WoyvkK1Uavp8pzyfhHUoJq9B7jAhRU9eqiJ2wF+kANCwVb01CnqVY+b38AxRi//ZBT6RYWzBweWSUesZWGYpSFEd8Ap74jrnBhmvcepwdsuUej/BTQVTGtzdaEvQ9a4oYR10VFyLjpKOi1e3ZmbGbeXstCXQU5m2wCNYYzohsYw3Ev4ezJpZyFO/yUezEkTeFyPc4zjQwXtYjfooovdYM21p3JKyRRrzKOwQcudCFZT9wcK44hBCMbE+EfpxIgM3M9Lujh39f0p8g1inuuYlNG0VNCdZ1DtnPmUNnWuVpoCGajSZpej+dbiPjezz3H3stpYSUxUEhMVSRxoMmwIXA2BqyFwNQRuzigxyhtliSLN7tHSeT5X2+VzkX7K3j0/Nc+xUM3TvY12eO0UM9Swg/ltZKC+L+QY3DdZirxIa+CDcP8LiVDwhP2vOn6WMjrlqEnP0wchG7byoJG7ogXSVTPpqpV0VU4wPQoE0lUTw35eYd/gnTH1iPWkd3ryJoonb+Kaxhq3WmwGjC/+xwOmkxIatqXL8VicNNXTmXUkNulw0p3VhCcdiiqu6yQE745pr9w8Wagb8xhjrt2YRxjm2D85zdOlL/R0ea/kuqPBn04DMoi6PlDa3wSTiH7izRzarjWKO2n/si14fqfifoOuj7hJGMkCc9C7O9jtH6Au8tv+7UA7b8yYu1ONI3kwE3kw1yw5eDDZpvcL7VcQHfZ9Bw03oM6z9hzog4uImjCw5ufw+qxwE9Q6QG3um5bhNRzjNDlTK1jJE4ShoB90cnI28PS4Wvm0Su4GR6p7XLyxrLq/hmpx1r2me0rHQj2lwt4HeYnopD0vSv0HSK+6O+vIL2oUEqnoeaEv47ygy5ct9sOvuY80lxq5Zfyl00SV5JYhGadoforZFlByHFB6r3K7VzH0x18kueecGVO3HUiBpyL8MCh1GlS/jNEfuiE+cLOyc0JOPa7X/RSlLG2sB9WWrrzF2iGi00WxIogBxN0WnbWPrJwmogsU1QWIzf6TvlD7T47wC+dFoJKHSoFuYZAdvaFKl+Y5roi7gOxvKrSP0XT5DHEnaFLrxxVAGSZbIJikUeStkBbLvoQjTpIW68mad56seRRtLdDotbFXnKru4oldIJB0VYHEeCxMYhxqtlgNPYKj4d7BR7uAIGmxNHPZe5q5fOj34bc6MdVvRbfosWaLPRZmiy3p1QyEBH8f6qJ50UtBt4W+M3tI3IMHlej6wZ8Sb+mK8vqBf9aT98Cn7yJUkeoVYriULPgSSH/TgfBD5DM1OJwk8oiWg+pUTmcqVwAsLHpmWGgDPZ4N5ki1dKxzPqMelE63aqCmZ/4CBLq9TY9xn8PFd9Qu2eFrdrFUyrKRSh3GVhWyrQsApSz65FqSPhwCxPFv4dM0S9If94hJ6tyiS36ApKoyHrzCu4LXSDpjWujLOCpc5SanzawPHgRUuwIt5TBVZNJlJIt7zFfyyBDwyBDwwFKPHoQe85U8EtY9wNYjYd0jYd0jYd2vHU6eVM66Jq87JK+fzD4XzD5fBp6bt/gw5Vx4hDmNKpfTUeV2/DC13I4fBpjb8cMsczt+GGve3zZY7nqvhfd1JM4KyR553c2tpNtBmnyfE7HLTP3AMRLJTR3bG3f035Mhpmj338/8vInz1Ts5WwRoyw+MqmCZsGA/FF4aVJfyktlJ0C+M9p6RO7CHIPLishwg2XFNKORh6k+vxNBn5IVXAqozQz81nVwEx1YkNDLNB+JT9SABPqV6el7E1dF7SPqaKfATswU96TRRS7XfIs/a71MKmF2AL/3cri7P2XlA4NmCC17bpMkDNtYZ36xokGwY4J7qV8rIChvqZCZWd0dWN/cmZTbt8jb3IajOQsEYOnySz3mexflZtJ8SNr8O/C9pmmchqrNpcJyYWUhjFPclfniTbQcsEWCJkQmxoJ44oipll8ymUu5xRRgJDiDjGWT8FyDjNsmfBBlBS4ZlCx8H/ZIDSBpVn/lQPao+wEQooWABFvJq8uCF5hhy3JJEBS004w9zDZY8Bf6nsX5QPU3bHOmjazZ6eFIRNck0r9F+bVVElnM8n2WSkbGu2pNHQeDMYZy9NCkulDhilPgTVBmGiqsScI321ylXtL92usgDooK2TeinzR4K/bTCU7grT+GuWhNNmOhHUQhq97pi9KeUI/aRq9AvbY7Oam52Hf8zT/6ZtSSzX0LY5HKmdI6Dn6Vv9j4GyGZ3l7LZX6Wwe0ph999lfY7+/9NjmJail55rXHRSSs81LoeGaYyJFCB/q16NsunmqQWlLq6AZS8GzDDGp3NRWKP6DhMvhoAWgIR69aSEqa616F1u5nCPheZwv9LIOhd57ffQuWgsCulqDJ3UR3RVyRawnP2K3L9NPfttJczQDzqYJxoIx6g2GpT7aAOOo6P2DRnxF6PnKYRaHQ9mI6cRhdQeL8PXo4ul31P/m87Gyl23tkWjxRj0MRdxLLyiI9THzOpjWdyXPS2q6KKnRZWOp/WSLinsgzyH1p2O6bkVzb53xANyA0NutYPbrsQVlfbbUYnXgdnqIDsEm/pJaGwlkX50vFEYj4zXOCMxduNwZhzH4cKYjsNWHTlbaPQNa0gubzNdSbUtx0lwqtq6uuRGYSrcz3RbxutJ+xW7h+/0O4R+6+FkrVPI25kOaUuTLuztLOztpN6BK1rKuoCeueqWL9XJzLGf/Ayjv6NOFu2PjJY5WxDtG2qUcu50ywt6IoHoKVhOrIpq3pLvi+IrzRG9pG22V7h17u7aK3/s7kpnaZsXcjXNUp4TSgIM5bDHoTt+tdFr14xVihqfebXArZWTGtPznMcR9yC2H81XH6XWo3fd1PDidMXOdrj1yP9jQ8dLilwo3AeL000iGdErGsCbls475iU6Z5jD0+h1qwXsr2EJ6XRbYMnTNSPaYeKdl2ynk1XSyQhMKjUofQEs1gxNWmCSiqy1ge+v6mzTcVY18oEJmXud7YJm1qtJQh0j33qI8r5oL3Szd0iSGLBmZCMgsmG1j1GLGZ2eMIoZaUx61PY6dkLFCc1OGO3npvqVeFFIFyusi23CxwRvf6o7pDi+Vcp26eb7gS1PCBUpazzGN2pTQxuGd972BYGEuiNIIGPyW/1isQGNzGQOVvKdVfKdvUAOx5BwGUY+0UIYBkYrspnFVymLr+H9jzCwLOD7ap59X2E15+SfU3fXOUr8puLxmbfqFzQKaqOXRkK5Ttyt+K08j0v3aHSpsIDRlfPLWZmsASVoWP0s6qPz+WaZbzYQBDHOUGYws4+/Q5AzFAQ2w+hSXgqfVOiDSnTjkxo+GFOkjb7v32I2ZfYMVtGMxelvq3LJ37ZGEt9XC4bV33Y+EuEZrZrpU5EqtCNVaHc1QWYe9mxoajtjaXLqx9t3B88e1w5YJtCgvMHXgnCFqplHUg9GZ2Zn47Yzpg1nZyPcbPqAnDjT3nrQBFlX2nBGdHEFMoGMI/YAZCTIe4WMBKBbmMyRdKpE3rCMWbSSM2bRDs+aDM1v+sky+8nyVzpZIzDuv2a1FECtdUmLdnYBlHfQu1fK9vnTO1R+laiyr2W81LP9VUrK25bM/u1cr5c+uhfRCvbeXYlc/JLMAOxfExME+4Fh/5LMIBnzJCaEJEMgyZBIGCQSBonwPxH+J+B/soSW7M49iraopNJWVml3aqy/5Y+0WKo5P4H82ak6LMiOGtbxt6k/71WtwuA0Uqz30MqYDsZNjDIxMK2z8K9moN2SUdmoYlQ1qhnMOwdSxp3DmRRSLVpMpOl05gIZM2kh2hMdiP5YGceEUavgWbx9aaH9KnP6Vzv3mWq+FUDjbzwlyytpdK6NP0WlK0ptnOW0KFlPByk6bpl2JwM6QlYrvbFiGyMrSOu+Y7JE5vSexcoXWPkC015eKfBGIuvZYeDOi0E+0O7tMGxm174f6gODwA7TiKC6TvWx2W1G4h7QiVSGxHMbIlrOuDkZiJwwF4TnPhuJh6cJcCEdbJNonZoW26TfOeJqEVeLNFM2nY2XjfhRIn6U2E4HWeLZk2ffx3y0NafT8dhac4K4eS5yL6c/xJ/6Qxz8If7UHzLFy7NJQdIFaWIqT6al0cYiv05trGHv630V6K86qeEhmsND2di7RnZZ8wXJABBEu1DTiJlrSGjaAyN8XMcYBHcyEMHZQARnAxGcDURwNhDB2UCESVlsvQynZVSxBdpaCRVryV3apKrl+FZL8a2W4Vstwbdafm+1vKdq2b0jzNhftVqeb7U03yk7fRdmZiRNwTYHNAxsBVQJoEowc0wwc0wAWgLQEoCWCMTo3xaRvbLarUMiVpEH93Ym9zZX+xeWfnWVfiTjDtJv77JyvIDFFc682COHmdIRF4emLbrGV5lxZ30ftL/4aWpifu8JQCQYTKi17T20EqEYoo4yY95fwYi/D3nGdrZ0OLG0QT2KsrqGE8ZkkUlTHo07TiD83R35gK1ch+m62Z7DYnEYB6saXCENzqNYV/sQSZmBGfIbGFnIhZDJ65pZtdtv7kpb+OVO36l2aLJUedGD3TPJokev5qLncs3FkrKxJGYsQovYI9DhzhCFusJHnr+uDrR0k/m7ODWItI/vWZkrN4h3S4P4nY9tJF6MRphb+QZ7CvH90Myvtukaz30Ly5Pr7Sm1H0KvBw3u4ldT4+I/NY1kCsHx3mJiHid5SXxLZxc6+xMmPmfXhS9FPU9VF92nVJVL/b9FbgiTECHUmmaxpvJC+5UVE1ix7+jJZLq7Eg+IWYMeW47Lnvx0mgA6Oyp0aRbMzad+usx+t8x+txNv3vi6evN0QTyeR+6UWAhlLnp/2blojlKshv9sLhothBeBc7RipkWK2+ytyiLR8SIAJZ5cKHPR0KvScGKWxus4oT81HyDDyBUmwplo3c/5sQyuTdlPEJ7uBxwJB314Hi8bfJnJD2in2KcdGbm6bnTM2Ew6IO8MTwj7ofweHSz6DVpBgsOikfageOrTlmSk4zhdIIeVRfjIYpxfaPQFQSNjzaN9gybIuPg9ZNE2S70rdLS8DJ68QTkanDzPwn0BF+iwZanwf4ktp3AipJBqE4GJLIJcL0EuLoUIhBNsqZRJM2onWRxI4Zo8SO+wuj/18GTKqHPD54wvne7ybKv+qWUJ3At7P4lzIdTPxvo5Guu3ph5FVpDt6AnDxURyOZFcPjJiN1GJ++LiBu0Ct09xUIErzIqfiF7N59aC7Z7OrYXaerVRYJwe1sS/Rn2xG7TZdo2u0egayIlpdI1G12iFbUljPGLNvyrcPSQ6NUBbFWcjK+nQnPJ0WYi7NQp3134pf2kuCi8aLfps9+bGIz7F0Xqs80fO0qhDJObFKi6Gv7Q5Sx2cpU/ZEILpOseUKFnzoI7O0pFu1J2lCc7SBGdpgrOUpk+kZfZEtWHnNCU5wVua4C1N8JYmeEsTvKUJ3tJ55e4uTXCXJrhLE9ylCe7SBHdpgrs0wV2aemXxk7t0/BgeVwu4WsDVAq4W8MgBv0v3kSqZ7XZPPtJxu4irRVwt4moRV4v4JSJ+iYhfIuLZE5494dkT7pZwt4S7Jdwt4W4Jd0u4W8LdMu6WcbeMu2XcLeNuGXfLuFvG3XJl8oHC3lqWjJ+1RwPHT1n0akFjgeOEGij/Y0i3YAXnwz/bWWgWkttMsz+1FwGQrDKS5NNzzO5VEtq2g/6+f/Te+fMs6CytlmSbP9Msz9TJz8xHyKpJQTpBCv1HpI1NGGPJk0jhA6QOyXMib7ZiJZk+8iRjHFU3LfImDkGSPxE+r9LmiuVwzMRCLW8qKmjwQRXuuS/ouW+vPbIzBRJG6cEU4qxA1KbbBvoAEKA5HDyJCKKBjK/C1heziTCfjKEkegEP8PDV2qoFQkNhYOz5ltHAKmiPPu1tKJE6KwvavFGfjYQUNJ1SXXAvA4s/td1WUFhz7d/FYjatisj1uy0eehWXuWqHqkXcgUEt4k53EEtDQZ5JYaZMJIsEpkSNPSdVqNh9UhZ9zBZ8xEAVtE5B5xQ0TkHfFLRNQdcUNE3J1qGlWPCmWPCm2D2K3eNDg3l+y+4DZQ4MRqBoAZsaT4AyP0MmtDwoedDxoOIRtNo9kFLV7B4tP0Nws3sgTi6Ikwvi5F8FnzyCTx7BJ4/gk0fwyc2MwXHUgwwgI0g0FqB+qTReU3A3aTxwmPpW04gVI8OhYUF+VdQBjZoFSD06+rv/TT39Y+5JKnz8IFl+aKPI7H65kRjn+P9sB5xAeMBgGe1POgbLLHD8pEMfoflZ7Z0Kbs8M87ro+OOps77F/9PDp+JQI6+9mkZf5jQGYGWdhlpVfaSks8JJZwr6+QLouwX0FyUSEqC5dZztKguG02KRBTu1kCYu+npBLXyt/u1cHhHzzwbM5wXmd7rTUFpHQamMCShz8Xi+2i2Fvoj/1KIL4pZEGVKVyyHhxu+jjroTXDtlpqyLnYL2zGvzePgnPE6SU8abMTWeSrpwYWrQ4t5yV6lWcPqgdduNhf7qckUHO2bFpmclalWI1P9TUb7o2gtVyatvDXXftgjTkzTMWXUluZWH8yglKgcmXhhS561Vr4vucvKaNfpGC0sfa2Gj2qhS4XetB1OuP1w/Y82baXKTZqx6UNWGAfeikeTeILOUmGYpMf16ZoVlDFedg7w+FC8W30pwQb/c8bSvVe5E9mbJc1a4GQ7vrYhXZTRnAkX3naB0RvOXh594Lnaaf6QRot/LHT9uJdq1hRZlXfSNWdRTgk9GCGwuGi0yP2BO/MkHcmfd5jOwNzPKaLG4NTSwFjmwFrf8sLo5mr95d+AHFV2Ze2VNcjsDa2eVICcFrBEdElUGKWZ8rAwjnKaw45iNiGHhkYfcEmUrhG2eWewLtgr6CcsOY7GRYLLp/1Se7HdiNvrmznxvY5RwsnZP0SfU5Iuf/uLY+4nJRtg8yMf2GLtmsKozRXBZdJRnrVAXkU9bRNeWvWfMx5+JLt2DwU1xNYWSfqDzD6Ja/TvmXWTUIom0aY+oOtkTHETLFui0zOpkPlEny5GtxQyIj/wJLSyM6CGMAsge90pKnhfu71uO7JRJHK8L357kxDijqOMTPAVpzKn3M3w90gMKkRlnVBxuIMUxzdlLQh94ppcgL6mn72UqjZfTvEO23p6RYARppyl25uXrAPOhl0+u2GzMzlvJ6/aS95SdF6b9wk+nLXaj1idttMwpdUfJ0db0WwWt6pOB9cnwM3G6M+PiwnjCJIRhZQloweczzoCZpaPOZTjZRBsNvze5ttv4XNAtY2EcpTBExykMns56lc6AvKn7tu8ZGLERnxwkI5zee974CTt8qpa+MqymSS687S9yh45XnJNfl8WjSVHg0OX4RNK6wGlqwdVIFlydXATZJyz7Csk7T3QjkXxfJBPJe9m3Kq5nJln5kUlGvJWWNBA0/NeySOkDvQ7y7aUJRozY9QT1le9cKMSr++GtlFZyrsOm03STM+bfJY1ieEgscL3HQq73BRbOoUAdLokdLunocCFZR61aLD9SnvMj7+xcvpV7P+LtEwdKYgdK2jtQdGxeNT7X7u5D9E2uvcjpqtYWVmuLdcOfXLtYraPMeKq1C3MHEr46xCiqg4UkZByul6TpA931kjQRYKPNvvB6Lgbnr7hAr8jOxZT0jQIovhVeVF40LNQ3MxfCC8+LgMWflm/es6aMFDFi1F007FxkTzkdG+S0Y/Ixo6CMPs99IN2wV4301Fbhkf+eZ4eFUGW2f+6ybATHHkeDRr0e6T+b+ls5KY06ywQVK40SK40SK43SbKNS592Ql/RfEMnyltjRuzelX4pkRR1wOvOrLpdGUXTKITrlEJ1yiE5R22ua5ucQnTqpavm220XEiJarDhDFdn90eiTZ6HMrzvfkzjYKXUZK6lyEVRzQJ5EXaRUU9EnmRVlFCH1SedFW4YJPRlrrXOy0yLfelo2HpZI+6ZakCNBh0Tn9P2JjXALNB/xI+VxUzLIuSN/0qxQifTOvi0X5hCd2EVaBnhMW3HCnQuEMnzte1JirbMzVvxUcOHV6/mllERqLomnkbsbHK9/mUZYkNv9CTwnvosL/U3JvtpkEySfpqReDWJ4Ccg9kjfzfxd0AxPvVy1PwfqkG7dVvQZHOPxYeOVhzEXiReFF4wRfwfIEey5z38fFUjT0qpYNDF4T6zuvy0I7lG6+L25uZH+ZT6SjQqkwv6xw8m+vsN+wvzP4zQDK0w5rUEO0ck57Zf7E9C/M1q8Geb+oZc3TgpsxwPrw5FdPuQ2RnTndvjiL3GNmxU4hhF1/Oe320/EwfPQ0B/mn1xgZnAPMH0hh3VuHeLXrmCz0dGbcafaZhkn+omobZzXjTME3vVNhwBBuH5KxxtWraZM+revwe8ZHlNNTJQfaNr6QH+Rpt3oLMht+52uYk7X/YqTzMGPQotu3dL2exrS4ODVPMPVWeBsS/U2388NbGT+zZOr7jXyLKebDnrQk7Mu+nivDKC7U4bEkrqOuCrFZOOnaN/brsYhH2sazKQ1kXhDiVHkej6kI6xnv48cMIng3suxEsMKIXlNJFoF9qpCaklnXRv59pzHu0dPpJpxONJZMjrUxHWg8InTjSFt/ZxSDSb+sy7cZwtigwRhatbXxRAM1YZtlDjoYb+amnxPqkyjAm5Y0q05X+NrbOT4HmqM08WmWM8vxho1W1kHbKyHleX89uqiNsY6WAQk2b5OBGe9HBYnWjOSgy3NlpHi92nSv5etApMKLyA9c1Lerqw1rUh9/k7C3/+sQqB0V0Q2I1I52oFmWbW3FUILp9WMdgjF9xbq1JRPc/4m2qTr3VEQWKEjI8uw8bx1GaTGx6wXG967PeLOkoOsusSNO7jOS/NHQRPyGo51iqrvGWmWfRd4RD66FskN6hDq32UEEoR+X31JHeFd8/PLLd6fSY09HpDXrscpqReEWoIl4HmJjTRkHFe17slZx9swI5NBF5au2OoQ9Tk0myFDoGKyg+RYvFqXHqSnfsSr8YP6vTF249mMcvPyoCP1RR1PDPuugXy8/6SlsXhENL8kjgxaKVLHBV10/oan8ByKZWwiE5t+gbr70l+cxbQnFwtZ2CFuL1v2V49pa8TVPJPyh1uTPSjUq49VewpkWkhkyAKwxwM2Vl55KnbDACMsHBZ+zyl7CLIOjx05dRNjKIMgChS34CnYTsOQKgYCChfZ0yebN33hk7D+DU0z99b0X3oO+IUFI9IlXAI2z1HxHAlndEX3DFEGplUngCKTlxoZf5NKbkFDKuLjlS3ue1jNY2yVoVza7BhcJ7z8AjDDzTf9JWZebfggE+s2ZTdoG/zIvKUcDKUcC8U4BeJKQ+I0dQf8yJ1VI5jKiLrw2VwmmnswPMSaoqJ26/T1u9I4/XKruBPAvc9MztOofVAHo6/XK2FpnEoR2ACOizWEHw4vS/3LMXR4++Qqd/t+vmBIE+9+IcuvjJbJmmlR7wcS0enek/i7qgPCRKtOv5X+bGIa0ohUMXQHUY71DnfdYsAcpoaDA1GdY9xK2LJbGHdI9Fw2jr4hho+Qm6RIqb+Ehxk1X3WPoQIGrTO9+f9Q4gP+1SVHUpE+jL9Na7XLudsG95Zl/yYOBwxeFmjo0X9fRvU3qQx/OK6zO4Ps6Evs4Q3UnrndVSuQ8Vkl/1hox49bRVLqgAieQ+9R2KnkIzqz6wCH4rPmFuTNUCr7+WLnTwjlwIxQRSJyqpDcxWK2MvHFtPm3uUNf4he6ZiT2Jv8zg9iWNxVXQv0vq/ILXnzr3x5tF+7UzgKhOa0xGF7KcMto+ZQNx+zG31WwFr9sFXkjZ1S13zVYx8y8MjoaR2maJpIht/g/KqtzbFI+VjehYEKrpngep7NmhTdk6PD4Q8l+7EKQlnJdi5F0XWkDCY8hhHGROG94yex2kdP65zvbo8l2lR5bXL42r5ZdPsu6AlMV3vDmpsjB9W1m5HhStfClW+rC4Kx62LuKeg+LW/xZK2sagW9J3Kufbn2JRG4U7QoAcKQ0OjwtDorEpuC2DPvol05pu4mK/h4In9AIpOA7n3fXA7II4B0VV1QclzdcHBRbHvFXsaDt7oDqZabNSIx28Vhuk/6lGGS6ADXjDACwZ4g3oRYJFdgMWx52J2YH6dTdIqtWoWdqZOl/pWEbniigiRLAlGMUcKhyz0Ed3KCYiFpfmioHXPqAz/TZXkpeO0seN0LAhSHkoJfLOtjkajicdXyLHLGnk1Mi1WqGlzITukeA8BmWoAV49DpDBnihTmXPBgeBzEGnb9sj5CAdD7BlREUCvugAgz/lKWU8I5PFh+vcZc5IXZ8NZDcCj+ea29yKK8xK+Vl/ZeeYlFIWKOYz5k4A60CEinuqjUqIyW/htpmYKXqdc8cT78A2Whe8ZH1pBJz/jIlv5h+WE8GYC6baRKGkwlDabR8WYgkp0xcgZP6zwA6DGDxIS4jE7vGdVTGQ0rcwXZoMjgbqzeeAOmQsHda7lmFlGZiosuXuAHwjFL+sgxLDwXbfVwWitR76mX6BtjKV80ls7auozrT89k2/omfhbTKLdT2NASo+DIoHEo+1MtwRSGT1yJb2Kz15wN7+K1S4zWArNwPCDJgcMa564H8hMsgdJERUlbOR/IyeDIsUAZWit/VxLiC78OIBwMe//Vem6yNmD3Yz5s7i27u6NdG7D3he8L+iSOT2L/JPFpmS6W+YPCX6n8SaMHa/RBb9o+b1kEZxV7fN8XeLDigVUbxmcl4vdYvc4y27HQMtsjCLzQNSLX8FdunmpuwidzZYyqHLMKdVTlAhUB3906Lg/FwqSF1GuelLcR0/Q3PCnHPJJ6G7bgCG94kAXZJYUiHQRNdfG7WNAjOqSFiEVTGWIQpPjcw1J+FsJwVpykZAAZF4jK2hX7BKHeaSaLAeM3Xesol4w9L0tgNa6RkDiyR0KA0RIihzkihzkczBYqt+kDaC3dg/taN9JoVs3FNJoFCjEzYfYetUbUYqkfcJzwZNf3wZKvrJQfaBnHOhYsNlpGg7H1WKRpbP2ep0NtHs82j/9FVeS8YFpcuz0xuVow1IjWt+W4WTZPSsqwZjz0lZ0jg9ItgBr+mxyMtA95IBn0idnd2xqXU06ePtTXoQ/K/VxS0Bu5GdxCE+9S6KNBQyGe6ypGDamonUAL1irK+KCpvtAXVW0EqAie6AAWL8nKLj7I4jpzRnDCxVAA28HvuTB5h23tCxS5ybsbwu3E46lNsK7pCW8dFBeUgRcBl/zc8qc5ynto7m+I/D93Xffm22pGgEWdWv5qEOfVSvCnQcgl32Ckb8qn6ZskrT9O1PxIcusUizvG+0E/cjY7fZo0lTZS3CTxBSku5HochbgaWGEpTi1QOHFhMrknv+IQygmS+yBwIZSFjsNXWSoJ4o3wfTbrhc16uaj319l6kXR4T7Z7c2S766Jyty20d2R2/NB2X0u+frn84c5QcmAoLuGahwON1wluOQUiEp21+tsOuRipDiy6g1zc8GXiwogr6vKmMOJMFsrVys9zqehYpW0XROSStdzIWmfW0G2fD1t9jityGFcE39mk/epHm7SHI80k5WIyB6Lpir152GuW+lCH/diffoE/LvrN65Zz/nbs/2raHsXlLnWbXHIHxN9WHjW7NaDlaijIFzjjuTe+s/qUnmdk+0RcfpEyAPd7358PolAvjSmVyNtW05lZS9444/R3krGXA/mePfKge0JxftnOXSc5+IuS1J+bw0ImcB7e+6rpgN17X1WNfrJ7uX2zoMvE9O5Bqu4whXDEw91OynQjf/qrssuXWu/nAbjFgN0H/n8U6z+E99MPw/v1tQy/6kirdLWfJwqucT4JL6ADdLpm3z7LcZrkOuqzqSibGjhQUfaVxCOyeZ8hYeNqP5Xjl+Lp7oLkTmXhuIcgEmUz0IHoSDSyNo/SG+xKJY8Z3cUWSe4XSQ46LVJ9WwrZHfCbKWnFegj9dGLaoWvgoQjTXPGkZCwdBjMZytX6Bia0dEnu2ri0/WC05Ky3YHLXJ6SZMvNiMBo6liU0hEgo1EyobFgHp3lz+H+SdVD/Hx1l1uxH+4F/IWo2dY8WPGGkmj3oZRqELCNZTjHL6BQjaWiEgyLlFB6sCZocm6C9KRS9iJDvkxAueAYSl4cffPpTiaEGFMGzT5+aOM50JcyKVR+hY59+IPcB9dw6oCjsKEPLkziZDmcflrsuNvH1D0TsIQYliUtsAhpzHvYMLOhoY5OH1v46En6+q0zcNghWkrEfy1LrHfd+c1TuauR44XkReZF5wRfwfAHPF3h2QD8l9C7brsIBzY7pk41WLBgUbLI4JadQ05MlPQUGtnsythuJ6EZ5KTol5MTo/bRHz1m442gozhnftBNR0BHQx3yCF3pcvNfvYD4WmI8vLL9Iw8j+VltGeE/jGDqm98UM2f+qVo2/O2Asgi+7brcmlf5Pb9Z4VkmXMVjccvQjxEWWhaMhLlblGko3pe7nwuYwuJjj04Xj08zfDl32vwmyuhMFL9IlO8TY4nuVp9wYBzKEEErMT2GgmbA5lTDE+X2K/TptZI6G5z8g9YMJGRZXoELFA5pT2nJ70g/8yR8c+sHmD2t/PuHhCb0V3aBHe5j5s/dou34gRHv+2/iAD97q8ElwcmY6gf7Mw1+Xv29gEpBfGfIt0UX/2G404NaDF+agrW17h0Wa6ScpNH2mEZv0h7HFEleCXypwk7L7wopxQqFinFBpkSk5LnN13fK3PxXTwyV+wsY/kNnn5RjSbvzXKWDE9j6esv6lZi2YpRlENjeMbZGSxM4TmqTlepRaDJYnHYnOoM1ncvRlUuODhcuf/6jFspjx5zLu3//pTrWqL91jB+3Ju+XPEpk0/unZl5KsV72ySrC/SmD+sZBz5rR2aFKNNKmTv9Ghd5AxWFcFRzPvrmFNOhGdiS5EV6Ib6OKIFqI90XTfQvctdP1C1y90/UrXr3T9StevdP1K16/0XpXeq9J9K9230fUbXb/R9Rtdv9H1G12/0fUbX5/ea2hothBeeF4kXmReFF5UXvB9hO8jfB/h+0jgReRFD7109uq6W/RWNhnz4PBBzwhFj0pM675HJSIzsFfpumFUYcVJThWn4Zgc8ZZqvDockwnNoxOckQnOyARnZIIzMsEZmeCMTHBGJjgjE5yRCc7I5yl8pv56GMEeyraHsu2hbHso2x7Ktoey7aFseyjbHsq2h7LtoWx7KNseyvbifwx9WJn/zhfJycfnzRG0tjNkXlReNFpYLyfRAqk0G7KYSoQBhNNrKfBaCryWAq+lwGsp8FoKvJYCr6XAaynwWgq8lgKvpcBrKfBaCryWgxzBRfNfCvyXHv5Lgf9S4L8U+C/DT5R5L7fZFedh6pOwqqZORCrGjLLoECbDVsE11ImI4YJdKNWzAok2NP+p3+QLsmGL0fkSar5GM+gxPpuh6WFoehiaHoamkglkBtkVM79kd0BZJX1HnHVyUV1mwUjOUs7k3fxQ4ZGqZRVNQVLLKmaCoi0aLZrjhfDC8yLwIvIi8SLzgp9gzGXtztUdeMoorgsGeJNORJ8jWrQpX7tckkQo0y1H7y2eofQamZgs/CLCMCogf5ICcqVBk/c3T63hyJFMPJ2YtLBtRL0lq53RWDriYOb0x3WMddkacv8Rnh5qSSG1ZARxJyuDjkRnohGLHi6IaOWTZoSktc2D8WSsC39SryTiw2ibTWpC/oPyp2/EELr4mwzxyJduWbvOPxwfqTSl7/dyungv3A8i3Bs/JWtFvvDWyk+hZ/WMUB/ot9z1UY7DvhPauxHWr0qIfLgFtKJ9YjVzm+zb2au0XfluZl2ZZV7Im0LJZ4dIzbfsFkceUxt0z2Nqr9nQUzuChSUxdHEk+480gzAmSFFl4pB6caGPDFY0MWL8vDNP8Uzo1eGC8M+cNKSWph5mXqjQcX+Fx3btQpBDGMgphrkOQg3TZRVBqQxebUf+6W1gtAXaR8JniQQ58mXEm46z8IdNjYYfkbKsIiVZdR+SqoeRvRlzeyc7mATOjCSnYaGNOHEoZ/h0r78SJ21OwB7G7CC7typmTFDIBdt43a9DYUuLEPD/nOloFcenuibkWhyDq8kEDmwCk2usBpImcSdNZn956RoZ6B0HHKtOzLi8nx4iUunKkQEcvrhhhte24ejKWVbbELIknsuSkUSXRlM6zYjQhU4VaLroKcDtqvyBqfYJU21trnRjTspMwkEozGCmn63cM8OrZmedCoGeopkem+Vfvdb6Lsw7XYl3Hjw8pvwW308Z9I6lBF+tvbth78FUZXw1zpLReUogOvaH6afE8TCdTnTKXhe0cxo9/GiJMx7hQdszvOJwp7tWzb70xPfdlxJc1cX9DxMqRRYfn4S+0E/8ihUMBIFiTRZZ4PjSChDd33kqwt4LKteMG2UwqVyVTf5pstjwn8zMx1UEZRw/t4hUFj2pam6mPv8oCOnzjRnnVfcHU6sgpbiTTGLjZjJXNuYqRlWj2qSStclOWqz5F0ygi3LKY4DG3LvTVdF3aI/tz707N3L/JPVPEsqPnoVecq8lXVs2tQkli5ILRckPm11I0pESWD3Js0DybGcpPbLc7j9A59eepFYHOFxgmp1J1P2MpbIVVNXbaeLH00i+F47NQsIrkPBiQaY9GYouuogqlpsZ3ZO0S1TleUWMfS68xqwztZGS2kiP45HspemKcIu9lAafloVPC5OQdeeMt5g8X/LgQVmc/QgWHoxmwfyQHZ22lfe66OaTt3YGxab8zdKPnezp0jgk/5aZH5vHs1DaM3Y9MjYzsKW8cFakICtSrDKsfiOViMHCsG+msuefZqnL3t32c+XrGKqtN96SaDK0DZvPGenOOqc66pzqpoqmp9Acy0hzLOP4Kd0I3U4yOZBnMuSCw5yGlP9FKXPfWPlHYiYFzcy8IGao2dgqctgbTnaQVUPIkyiynVwhcnIj4yo3Nq489nshT0UVEkyehFFcaFy1crrXKrJ6vcQoK7mi23X006SiB7qI10QiTzrVqt9BTrXjhCfIKX/q826Glh/aSL2QuaRZEtnbasbvXRJ3Nm2akTS8EIWDVETCy9aeedqN4WphRrGM9EyatogEjgj/+craAhbWbn1ijgxHjoy9QFLDLJJhFl9ZXdHsuGk6dXpnLvVU7KyFjI/TB33Roy7vDCSFgvRrQkq9iIwK3SqRZ3kVC3F/JHmVjMs/daPvlUCj+yacsitZ6UzPPdQWW5W8d/Jeoj2ZS/4v+BuCDUl7sE902Ln7wC5JOdry7mT3FyZxOZ4r9E7GbdKTjr0x/nII6cz2d2z7C9v+nm3/8LnJFHb5p9oPhaoCHVUFriX92P3pRA4eTKyqjkVIMkeSTF4HoK6aTw0Sh6eYR9k47Mbg0Zx10R12+XXI9Vdsm+sxn0OYJ8hSG0H9L5hV0il/QFpt5AF75NxPvHNvPXKfutvyksJ24npz7HpzP3O9XRAAWqOe1aVmql0AGUFm8jGMe+bX/gP2jXdfwkgYvhKN7bpY6NkVG7fbmNuT3TKjbmhf5/b8h2kEjtMI3KaTxJXuEdsU1+CnQtZjndnISJXhkSrDoyc6UJPEnVcOrBKrMVByTELRcmeK1r85AaFRssCHiQYqLwK1RQu6+e90ilOQzP4Mi01EvVhO4qZrZySh3g5ivZbdMw/h8MJPLHTscIJwseYxrw0rR+KIHq00EkeOxJH/xrD6NrZFDvSzwJYMGyxbqwgZTT+2ES/wLs1iH7JRDwuTnoZXspewewarLrpnsNp0OnXDd6UsulcOwwvOfI0ty0dRs6mtvhfOfVv8cIJVCDdtadL1WYMTdfJ3mNFONZPORBeiF5gxVPoojPbGWnsKdO1wRsx//5OcJ2c5T2sOk2jCoWTTS5fF/S5lgyF5aTklaDk11EbiR9nx49vci5cS1Q2JWn8x2WlMMs6jE8MYZZxnjymYe5HMvUZymljzJPtC/oYJF28xYMufbVv1iauQTSSIEwni/6IEvSXpVmbSbf3dpFuZuXsqXoXE654f4rqAhE0LfaxFSk9ZH9TM1HoVypNEXrRXk5mc6aFStlGeyJCfdINSIT9Hp8P8Y9Pue3YLZPHxUOZAFuIi4y6k2/48yXbT7DekGxtnYjZ7GupSuOR+//81VP+/hurrGipnNVTo7HY3VmUDNRlhdzdnLEFAOwho9xIIulD9by0CyH8FlxLlnQExfx9n3kcfQz6gTpjdvCGatZhOpZc7Si9sEHgZuX6kPCVpOJrIteycdCKwPAaJQvxEoisZf3TJUkgUVey6gsq4gjq8ijq8ijq8ijq8ijq8ijq8ijq8/9qqP+nNILWK7n9cBeB3VX++cZIn6QNGoh4uoB4uVG54YaV8zz0PRJMFlMQVIuroIur3Iuro/idXCz7XCMoHNYL+B70fQ3mtHD32dvaf9mq42CqAvrD2DSDwKxvAi+G8IMcGHAkGHG1Q3X3clCHUmw/HLl4Ho20H9Y3gnS2NvNCmChQMXpzvnU5anwHoK4D+IAAWp7lZIOxf4/SfjIte+NUuRVXajYbuBFSvWaDX/ev9Jvz/uvhLXbxWa8/536+WJ6Sz/udUdFvwEwg/gdRjEGAuPD+B5yfw/ASen8DHdWHdVAc0zFDAgn6LHrigAwyFQA0QUyE1sBASWiXK2rFIeLG0KQr5k+ZS7nMFObqdgvx3MwZe7Mv1L7T8VboTPWuhN0N2WWj7A1WC78rwvf6BANOF4HuFdY9Bu9DNA9F5CdKsGQCzZRVo74gWoj3TFXT0oHti3uxBxXR83Y/K7dz9UW4RzTAj4o4xboTriWzouQW5dja5sjVKMfzpjnz/GDrlhiffp/Iybh6GcznOxKu7UhjfRg8fYjdmXTzEbsyWfeJ9xojH+6/0bicum2xBgTRTS3obuaD5JPevjQ+87jKrVhYLll/4m10dYsDZF1dK26N/byf/hW4SbfwZm7X0T6OVwos/4+h0FpMu+p8xfQIbDBV1oe0vurQhndNrZ0fSrABiDSGWP2d2rN051u7YwOeIbiZN7028bs/A4faZ7jZ++fEXHL98p38zpbm/VxkD9zqq2WL5S2UL6l4Wwcufyv6C0S30caxZwjgGBfVROVP172mpXNEchwU+xGJm4PC8JMfOFoGzReBsEThbBM4WgbNF4GwROFsEzhaBs0XgbBE4WwTOFoGzReBsEThbBM4WgbNF4GwROFsEzhaBs4XGRQj6vQv6vQv6vQv6vQv6vQs6uws6uws6uw9yygXr8i7o8i7a5X2QHga+h4HvYeB7GPged/a4s8edPe7mcbc1v+Asp+Cls0V+xdkS8Zt85HjprDIGVvzvd8JM0tyBv6Ukxw+V5CsJhzuk9Ush7w8qdt/UUI3QvNZQjdD8yBucF5hlVEEtMvpkZJiM9i+tJ164CfM466VAFgjkOqC9Km5jjs4zhudjYvoBz6GwD2wvkNWm4JsiX58c7vWY4atFKeEoDIqFQLSSuGBA5aQD0Ylo+m6l7zb6bqPvNvpuo+82fHcg8aQL0TvUnQnifWqb0cghH1g6MzniQg88mXkcen5wRAvRezzUM6wIf1ZFT5qQqwPTfSMeWf0Ce597EOMSjI7tA81py7cOTFUdeGrLt9d49RsmGvF/cBS0Illo4y7PGpJfuIs0W54VkXlWRKGyLO3CLWie8YZlur7sRvrUln8in7RjpjpOyqYfTU7RWxRTkT5hM72qNz3ojOcynm9lQHqmHTcy1znM8XssbI6f74OP7RPqRbvhsIWTIjXCuS+SNcJZ+Wrm3o3G1pp85z5luI085WhHzDrfsm/+APfzud35IwvTH+ajn5sqhX0DhX0Dz95CkSdWPEw9P/JVVssDFmNeLcajQ6kek4ELpSyXsHDbE+fllfM2224L5OfbaQvGvTYhNxszLE4Xn2ya3biWWG7sgPoyTrHsmYQyzsUX1XpKbk+O+MbW7X+rnNyzeXvZq/wM5u0Js6llevTLcdtzYbV2ydEUMcp1tz8oX5shqloBiiZkO11sNIbgrTrmQadZHrPsroR78U6jr0aPypoV0bgrw7IfEzKCxxRSTQn+HRBbjYJ6wWX2oZ9suEF7HVx9APXdoHIvdIiv9IaTzfIaoFhRTpWUgFTZvUW13FzeUGSBrl2bLd2c5Sp4vddId3IRyfyrbYz0/GVDFWrCk4j+cD+dpUTGtuwgZ+6oZDKEfK6LUVnGRmmD7u67dlE8jhBll2JnvthKvtj6tW6q/vmgi361gDSqMxV23ZdGxrXbGzx2aDaQytMUmONGeqt/lif7zaPk/KiMusc33JNll6eq+MrMc1MjPNp8nh7kYwPQtGirutEPwtdWYlusO2ifwX2kff4VbjpN4E9uZ9Qh406ZrJjiMI6C39ShEy6FPjax0I9dPjvT8VNXkHLdw9qYUbFOf+4iWh1Bnr06F108jXUY1lXCQh/5nPL71WND7hjl/wJxZd6eQxplPRbfFcrrLJSkW+Y8m70G/d/n7vktBgdTS2Nj81ORSuZlIPNyazWMrlpqL39nKdzZXW7E4zq/uM66HDntTNVDzPKg0wgxy29GvKZftbFftS9EYIb+snnwzELZRKVpcBkCMlNx9nbDj1wc2/sBwa6AYFdAsCsg2BUQ7ArILA7ILA4QnAGZxQGZxQGZxQHBroBgV0CwKyDYFRDsCgh2BQS7AoJdAcGugGBXQLBr7FPnQApIDzKAjCATyAyygKwg3zuFPjWsrshhb31rRksIbVzzGTNeTUYgH+ylmvjFzEr+wOYT0pXjy5OAn6I8nIryf7MdtngGZADEaJwqdVw4vvYZROpuEqkqPR7aIMN223I+FYUv1XGUE1vcIhrJWvMn1lp6xo2HStchqxTQfW94ZwUy83DE4USH0ZuiNhxuuEgLdDjjMG45WNdP1sXhiMOJDv+2mbmVfAXt40YBq/qWfTfpRgMS30067UBy1tg1XKntfgqEqDmz98umcFCgP4p//NRHsc0DWYzEZdcLhSrS6rHYeCl25iHvUNqVlcmHY8lb+ZaMbLVlW2ZsLtp+tOXOwf6Se+3hxA/uQyeaYyeaeyUQUg+aJxsRPxDHZ0SPfslIixvfPzt605mjNzbDONqaI1w1is06Co6uqF3DDL01QjcOlCwgq/VVTdWOjo0+RM9IXR/0SEtXmo5XOj40mkE3Ot74eAOtvDAX/IkEXtD9NMl5Lp5iEKQVwsiKC23aIrcv6a714RV/IUuoKHopYquQH5mKoos8m1Yf892X7OV6EshAO0b0fYBt6NEesRGjJ98x7H8cj9vG4PaigipAFpb8jchKShuoH4wzeKg7gYesSnm0RnPGL6q3/Nh+WXbkk3aTT3bnc0gjX9RDSkMnrdKok9ZOQUFTsAdtMnmrufRu1tVbc477+f63VJoRin5cfdgrenXZ6zp4+gcNjWKnBJEcciyHPrNRfBgccy02vfW716MQktkJBwIpQmg9JYCNd/q04OzMUX80SPItls+kknEUOKdXgYWxqXMEmMyCsDS74cxzMtGF6Ep0A91VxUkPodF/na7Uz+NhoQ2gODJT6PqlLTTOp9ZTle7bO9dMmu5b6b6VfodK71vzQtu9aqZ70e/Q6PqNrt/iQtt1GhXeNbpvo/s2vj79Do1+B3FuXdgdHgsonk74tMyLwou6LuhqrMY6fgLhJxC+j3hehHWBSwtH4iTyaYkX/NTCTy381MLP5vnZPD+b52fzYV0YO4x6DOWHg8LDek1aaJMoeaPjdNn3Vt+hloZcy6nVPeHX9JqgORSijR1EXYhf2hPek/oSFtpUGbZsvw6aHi3bn6srW6uh3NgooGaIZaPEyKM99pM+Y0cLSC2EDY/pBpUPG1T3zTkOD9hWOhGdiS5EV6Ib6AHPSgvRnmi6b6H7Frp+oesXun6l61e6fqXrV7p+petXeq9K71XpvpXu2+j6ja7f6PqNrt/o+o2u3+j6ja9P76VwOxfCC8+LxIvMi8KLygu+j/B9hO8jfB8JvIi84CcQfgLhJxB+AuEn8PwEnp/A8xN4fgLPT3AakfcckfdvIvLPSDpiC5HC8J2Ry0RSC8lnOlyIrqALl0oVd+KlyV96aYLS3UsTfmBG7hKiLuVsvoiaf+/G30fbtoF2q1Uz9VlpDsCPlpQhfG9h3lG6sm/nrZL8lJZEViHL87zQtiOXdgyOPIEYJiCJcih115aTXcsB5k92MJcIaxlfoCatkfr3pP+0R+RJQfjIlx1OXIYk5Ht7C5/UWOuk/4no36Ttp3Y7F/hZuIvJj30Sz7sMuLdohyf74+/HVAUxVUFMVRBTFcRUBTFV+X89ploBunCzvwq2nrPDFd96LFC7Ix5sKM/j8InyrLxUOLlVGUvAWOGA4oECOyOINIrJNYiki68g/UV78uxu2wEuRmIq2XuPCTUuyhoXTtbUZdCV6Ea09ijRhfDCO17kLUrQb/4wDinGFMk6XPifRchOVpRlWATkQ/5JlPV/dtrRInw+MkNXjhlG82ASNZrDU/Qq0Xylg4NQG1X8wCjNPQFp3myr2KwqNSVZH/cZlYSgJ8SYXmxlV5dimU9ZrFr7tN0smSunTkqq5Kmk6so2ylw5dWVPea6iCq9LrcpTqdVbJ/WLhLdL0ZwAt/LHlVZDIIxdf+42cS983r+UlHOlEUj2Nw7KNm4/Jw/TUvPqdLjZDJmGHgwfHcE0lJronETHM9GFzil0vBLd6JyG46NrmNKCc4azW497oumZS6Dj9MyFnrnQMxd65kLPXOiZCz1zoWcu9MyVnrnSM1d65krPXOmZKz1zpWeu9MyVnrlmOk7PX+mZa6Vz6PkrPXNvL6jnNHr+Rs/cB9rPc+j5Gz1zi3QOPX+jZ270zI2eudEzN3rmRs/c6Jk7P82TtDfa/ER44fk0z58EXkQ+LfIniT9J/EnmReHTCn9SedH4NH4f4VcQ2jnad21+wq8ggU/j9xF+BeFXEH4F4VcQfgXhVxB+BeFXEH4Fz6/g+RU8v4LnV/D8Cp5fwesrVGtPf1/kN06F63qdZjlwjrmWYwZq38NZDvmLEsyPzPCt7U2pfIuk+Cw9bNs96t3srsUuOGQZ5LC47U+VpSlXhGRJIFmSSH4kkh+JZEYimZFITiSSE4lkQyLZkEgeJJIHiWRAIhmQCPcT4X4irE+E9YnwPRG+J8L0RJieCMcTYXci7E6E14nwOhFGJ8LoRLicCJcTYXEiLE6Ev4nwNxHmJsLcxDCbGGYTI2tiZJ0LM14NWRODaWIwTYyfifEzMWQmhszEKJkYJRMDY2JgTIyFibEwMfwlhr/EiJcY8RKDXGKQS4xriXGtMa6VJ1zzDa07v/RwXTBDrhRlvqkYvupr6fGN6fRgs/AvlRIjnvnktRmAvE9M4UzJ+mV25JJb4sirEm97B/lV8cWTxbjmidwM8j7Y8peFliOhFclpFb91Wm2t9HTbuZlkbX298w1t7fdM4PXCmM9swOd/p4PHc63pR81OvnH9ZNztt7oQ7dM1d72H9jG33+lKtC92e2Hh/72a17y0Ujl3rS7uVPKHVqIb+0kdL8Rt3ann8WXh+LIc4ssvFPI1hHeObpn6oGTqg6L9u5bAWv1f6zb9FGtHUKBwUKB8ia89kWYaCEkNBKeJ9NNYmD4ltxgLaWzYmcnzKkJwWsW9d7D+VAHKqMl5hePetlIXrBFmYYSHPyIYHJEtFpEoH1FzFVGZHNErI6LjT0QTuviiN+n/viajaBjp0DDSoWGkC3+pIWlE78hNc9KfNyRlDep/R3PStw1JWbH+birM7/fvyfVCBLMi07C9i2DOpENB0qEg6VCQdChINJSZaPiI6y7VR5rWFSnpMFLSYaSkw3ioVpoJiJESECMlIEZKQIz/l70vzZJdxbmdUOVaiJ4a2xv8iwCBNjbY2OHIc+5X959wn5Go2+q21U0ExzXQ8D0BvgeroQK8N8B7A7w3wnu76il4b4T3RnhvhPditVWE3yTCbxLheyJ8T1edBe9N8N4E703w3q6aC96b4L0J3pvwvamrBNMIV2tEqDUi1BrR5q56TCParBFt1ggwawSYu4ozjQCzRoBZI6asEVPuqtQ0YsoaMWWNMLJGGLmrbNMII2uEkTUixxqR464aTiNyrBE51ggWw+KyT931Rf64EOsleNIGFR1lMI8KSOisJCsLkd8tLBH6k8ISKHQIEOLGgpOPCksgLosTzacFJyuFJfB3Jfi7uoKT5wpLqF9AXQhiOX9BYcli+YjH+hMERf58Ycn1hI1+gE83swdlR8G5sDchL8Kwju0+KhBUF8SP55ZLEzAiSJ6IpLU0m5Iqa/nvVZMfCIVrBQUVgoKfNN47jWRtgleBONm0mH9xQUzvik7oVtHJ/tf/HsbP7YAcd2QUDDTAiYhTBSOcSEgH+K8qC9ONgNZAG6Ct7aYb3bL68xRUyHxRk3Y0Ky1opnmPQf+00XkrrHWt8QyORHq05+eSnaPNAl+ugEl3p9iEFi/es1wNtNg6Shfa/qhB2x/9J4aVrfUwWVIp+Pt/E0EO9seoyYYug+u6X/ehttw3Bj9lsN3rxc6jl3Dofb5/vAZJl4dWWFAJLKgEFlQCC6oZLFh+R4nElVZoQRqkBWmQVksHlJQOKCkdUFI6UAc9G2lFYGVis5WJzVYmNluZ2GxlYrOVic1WpjDzCGWZm6xkbrKSuclK5iZvpzS7v2UyM8nbtLxNS1BUeyGDkFHI/IQWZCoHjRVSnmXkWUaeZeRZpoHEBZmzgsxZQeasIHNWkDkryJwVZM4KMtfIBniixNH5MO0Sqh/oehxq65Es5HsZ3iS7dHnY92bVS7PofmPCWenC3JJC8thCKdfUqkEW+Yz9QvdHiPZb39FbiRamAQ3VYmmOhVSJqxUZo2vzOW6MYps8ISUC5R2TU9zchO9NSp45ERmyUan8EoKg7zgvs5OkbOx28lex4uB/+n7CTTPSiWbMUAsHl672BQ4xq7ycf/MbY6ESdCdUzDJ2PxbqRjfgQSVxPPQdcW+GroE8cQHV+Z4S1VLSkYKCDmtB5P3hthN5frrthu7rRzktkz59IfzYMAIQP5heVMymtyHxpnN33LTpeBmT5GittJ1e2moKt9r6vCMLhb2dENxvtGPBx8igxmHsujnDLO46MahBDBoQg0nEYOKaLs0LeWqSAO5EEBoZqEIGBqqcmibj/Zk9J/bFepfiAchpUqYbYucjp5MhGb8+RtqqvgFZmxE9aI93LKYA1ep2le864r0Ot1q/Jr5Kqonz210BLiTuEN16f7VeXprD38UfpInsUxEuiNARLEJHMPJy0UwmatlIqJbfv2Vgu7Q93BI8HDemaw3StHXSIG1Foj6SxbIE/KWfZ2Tq19CEe33CRUjajt5u+cDSs5jobzoJ7UzXXeHImrQsU8Wa1J1IrTjGkXgV2oqoTQpELYHFqYE+FbR1m08Fak495qQssT6NhaOxSyTuk4oPTYViHhS4k82D52atdaZrVD+XJPCSkSqD0H55dGlvifqpJapknvx70QbKHzfahk76qBNAEZhtb5ET2xWLviMoAhJFwFzhwMdyAtQsK4ih3XvBvDWU9zUx/bKKlDPABrUcVi6ycNzJ8et2cq3Qdtgb+2ZwPVI3Mu5MjuMA31+3Q7bjj0Qom47eDngIu61oyvbzB4I40MSetSBkHQhZ6uzZY8FKKQlghEI2K+3sSWgqSpsXfOvRxnxtBmM17kdqFSEilvOJsJXM55vwCUx9dQACRiFXirCj7jD5M/G9AIYVpMormRfmW9IGH8+9J+rxD9zEzZDbNkghRRmk8OFQMcKhYgNoXwYmZOYJgS2dnVDXA06SZlDMVW6L//f+I85OEHDCnJoiRiTfWHjXC5bgMf3+D4fCCDpzmmauQHa5xCET3PducC+aBbP6+wE75aR07hujeEoVcpvUsd1sDfpuo5Z54+VdG+oIZhHnzkhLMrHVPUhk2I7ZYKtCvhf4jSe4YbVtsXxqOIUI/NmWbdsUdmxsNsvfDuNGu2luccEsth2mK7TvpCya0RiKwDFUQsOODbBhw0qmQOyG1+IsOaGps81RiuOoG6Hh74rwd8XDSZL5V9vMXEZsUGh4VXKdGyB06JQHBoyBhRUuFtne4yL0U7s6YLJzNmCB7yHdR6Y3837aonNdfL+oPx3nxNYT7WuolhPzojg4dUG40LgwuDjCwF6WWVFWVmXLjBfFHUH1qY7V516KeZRijqUY6lWQaNifEaRbF1OXii+N9TPVgSoS3bb4OD8w1tCi4T5IUdUCLr0JZW/kHLUuolqRdBHd6ela6vi2QQMB2uZaP30bakQ7X6Q5pi0XNQcsY+L18lQuNxz3bieIgNb1VtJw1ABtgXZAZ3VQ4LNcb1lxkJFjqJOMzJ5bE18G/6bhlIoKKkQFLwMpYxw7uktxlgG7sisvbEiHLmDe66G6fZIga7FBuzBf4UonaLSW+/OEN+FQeZYTf9KnviUlSUtKFgDFUXSx9aesx1M+bjf9JSd4ROw2tuxCBYbDfI/f2dm+VRITFGhljdBbIwPQQx+CHuxwRk7ruIeAPGLZYEQw+h9y64ZNgAzlBMm4pdNRXfTbuWQ0eAcZDf5kcw9UiedN+/4oUSW2yPe6mQ1OgOlieV1GQ5fZqBioloVTuMi/lm1aSjELMMvYxibiE+701RHHaN5olTN2nVcD5ELPvcBdKEdxbnk2JbhovtJRbG2EU7rdnTern8EmbuAUXgCxnx5KFMNPsV5uydv9NqTqygkN2ICxQHug0aczIAyt6iYxCg03W7jewfUOXuyhWKBk27SFbC9f8C/t2JVrKnhg7jRZjRGVrQyvO9X8lyudQwkAKhToaDdxOXEzm1DOY+eMhH/Bsbe4MZBIA32+m5XszYXQTDjbybPI+C+GZuJ5aGYG6P3rjh4nGH/ig+YpXovOaM5kdv9XvNKpQEVV3iU9gEK024juQCOCaBFVMzMhiUdughum525YAm+oUihUYgZISXLANC+6UATLWRokPFRvCPN7v6wpJym0Mf0YGk7OPI13SajgM3xVtW0/j9XOt9bUN/ow5YE9qBEEWyxOAotTocUJ+Q+0y3/weCLgAtDcaokSWqKElij1liiNLFE9tUTXfbfedav1AYTcKFMPSR1wIDBaaExFA0Yz5e+Ym6WXAnJddtrTBS/pakJEhi1qH+OckGePQ2Tv/Zh/jGz1p/zrHCVBsLZJH7HUDf+s46ONs4ZABLcvIwQipojgDpRQXcDjNkAxAvlUv+OTbOeJ3TrOBKKJSWqAtqem6m9BYB8VxCIf0M/z6RGUGdeehoSL7s1TTHVRyqhSchM34sNz44mDy6lVsWtXFsSR4timG76YIV4wd+YYXR/xqyC6QhB9D5x3YDlVGEQA8omYR4Bc7QFyh00eLYPluh5OEtnrooI7fgG1gANt7QQqV2OoXCFUfhDenmOBM/wPeROxQORTxAWRZ48xQppghEsQ3iPpqKsJJIBPL5Uvd25mgpJlfTEdWxdmDS0/pKQYHLiBrPCoZAO+trouuSKiFC0c/7JStP2iJi3uYEqawJTTiFeJ1RPG6tVhrJ4ZqjKu6vP+BnVWbpec5SG9BPogjlJNgEmJedHOM01qBMvuOJSjVoE7pu3iU4WHZrxb4MfgWoeMI0amQ4AfEdB9GEtNw1gZ4GcxZILQv5z90qP1yVyr35kkxVwtJ7thmVbLOwG2uOT6dWm6ps/ZvewUzh3BlhGmMCPseKhlTQnbZeb4LssdtbGoaeBfD9npnAZWJ1mK5qUug130qj7k2UFJ0HIi2JXg0weT0tGQtD9k7+kX9q0c+FbuLP3wZReqJdURv6BDpu7T1i6EhYb5laajj/LN3W5Pqm5/GhxL2Kcm7vdnp18c6BECPTLbh+v1RQvpX+FKxUSpTi/785uBp+R+Sg7NIog2xuQXjaK3KMrMzPK40uc72xZjTNXx9a8/cwdBf2en7wVot1dxKrDe+icg9rgcoo4yK+UQCsohDoqEumKgKPPRzgqA1ErJBOepR+4Mkd2YuAeHoQCz7cttznpxNMsUMSouaB+6clLgaRwUeH4xa2AII2+9BP9zJdF812ohlc2bW/9lCF3/p0QE1L5KSLb6+/gyQBYXdvei54/zHoc4muVFfoA9Zo9OqveiHI9v6+zcsIpowEEzQU6D8jiC8rj7Qp2tdX9ckXy/aFSP2p18A0CrLfcUttxTN5C1+9OU0FIKP1o8ceNF5VwI4WxUzojDCBSL7uhzJfOUMrlhzW8K/Lf8cqJl3v/D1Mr4X9+ZWOX06sdJhXYjdbPdoa/JpgGAKKK+D4rQAZTSpPfJSXG3wuJuNTe4CpsoLOKG/khrhlifTTGyz5A1zd1silmZ1bPV3C/Wip1PPZwgsNR+YMBPU1TrCpK1BGQTAtn0OJDdxXv6DKbFQRz1mm3fgxNNBW1bWp8MWumTMegxRk7N9dZZWeFE8ywEJ2Xo0wfB/NPWGSn9wN7dKwB7VCTVY0BzxXBoesUomYrnaNBFdfEpErTaX3HTU3GgL1AteKDDBsipHgp0epnaYOkKqFNbEhG2JFoT3ff28NMj4F/cWK2ZdyM3XZzikgGdhM7pl5UmoDXQBmgLtAPaAx2AhvcaeK+F91p4r4X3WnivhfdaeK+F91p4L6oY+AQLn+DgE5CVL1XuVoSMACGjHvudB2Mx6GJzQHwVOBtGaO9oMLXG8nOlFXiO0IHGWvahXNe8jqB53cWGYt9i0meUiygUrQihrQ2T1g284dd6eMO67XDPxe1wz9DtcM/b7XDP5u1wz/HtcM/87XAvB9rhXiS0w710aNzbC4p2uJcZ7XAvPtrhXpLAVBkUKjBhBuULTMNCUQOTsW5LnYv5G52l+20P8QbScuAvrij9AIo+gqLnrrv0pa679Pd13T3stUu9L/mX9doN0mlk23fXyhwsK3Ow9gL5n9CZF5WCQUCrkTJ1y3n0VBopk7Y8NUXhwSKU53pRMF6e6z3muzQyzm3KyCoqHzVVQ8W36jnIdTlPaekDNq8NjiFHLUJxQcFd7TyIVtRvpqvMQ42LLc6zaxKCesB2qjW2b1pqbB8aGv/6d5ofUvLvDPjvnPxne1Mjlz78h2c2v8lHa2WoVcpQq5Oh//kqmf+VTg0bZKIzYAh7MBD2YLgeVq2hfhrjcbRq2BRkNfLxzK2R+8/11o+THOtGViR8NqH8ZUT89Pw5ZMoiezInFgQ4gLdLdQBORlKq4/vGEDZhtUEJxh1/j/Gd/SQbrFzUGkc4dROKAp6Z+lnuZ0lujTTShZgIDq09t3cTwLEK7N0IU3uUDN4pFZvONfuu0g4G+CQY4AO0heudTAUqhgXT09/O/+x/pQIqLTmmj2BKNrYte1olUZXq1U0JzQ6fGaf8MuR/fhN4e/8fKyt4KAIu00ycq8gzHy4jt8uwcdkf2HGg+DoFarJCeiETtiegdpx4s9KubYGSXZmZvu9nwHdoeJKGJ2ksZj5rPz7ixAVhDVyZJe47bFmOc9iSNin7SnKGCckmrFeqjV+O3g9w1hRaTXnCZM6iNClXymXaajluNRx3cNzB8QjHoxz/UMRPAk8BSCM/kQyiDjKIOsgg6iCDqIMMog4y9jrK2Ou/eMh20+BtcLaSwdlKBmcrGZytHhmcLUObSYY2kziYZIZDtj8frO2QbANsvjYsW77dyJuNvM2ELw3WtoJ1nA7ZfhQwcJAkrHYwAp3BCPQxjEBDGMH0dkPqUACBuQ/jRqWQwJKQTkjfSJcVrvpGBvpFM469zAZEOoEcS7OLIpAqbeTpJdWXRPrUa5LQBXgM0vZxLFS0l96+XGahnFzi4TCMdn0vXO1cVQRKvSoCnToa7k5wNym5KoubSmugTUfLk8r0uPokAbuyLOK/LQsjpsfCJgsNLcytj3iwocPaOyE/j+lsoDBSRxZgdSkPjMF2ySfGM/BNwX3f5b3F4XvRqrp5+TjjbswbpXTCCTpTaQ90ADoCDXxZHBwnnUwqXbZHbiQd4DkBnhPgORGeE9tzaiId0wZoC7QD2gud+Dm+Wrz8/AS/Q4LfIcHvkOB3SEH+loKgVAGjDC4sLlAOKY+LgIuIC5R3pHABv0jBSfjPKl0s22X4NMKnaXyaJlzg36Px79H49xz4ZhfdsYty9b78XJCZoesIiaWtIs9AahWMR0G6upOYCsy0GJlL75FiJZPpAXEGg7U8Dtb63pTml8Sjn2v4ytdSUFZNCQ9iMINEb0wp0+/0t3cY+T85wyyFQsd6/UZUvt8Z3k/JQjBToZQ/iKTzuetBkXRMR7mkpChRkW2NtO2CJI/jYgoqcgpIfnPe7IXychO8lyVUXZh2UfHXy/PeIknoJNfkrZwfX2QGk6UbhQ4ncuExZ126gbW8Yieeu690K13rpErJ3SF2QPM1hH5nbbyWVOn1vSR7YrmBmvNYhY+CJy1IJS0yhJOOe79wLq1ywW/52990+9tn4uoBY8pLZY3zUFmDYklLnYLXUKdw1/z6jXniL+v151q8C6F1vzevdjLDt74pI/GRt3FplFKMF59zoUoJCdMDjmejoFxQgidtcci38ZhvP4L8A/QfG6t2LRBvUkADg2wz9G+pcBKUZcIG27oYJ0McnIchDqosjHxtxzcRDgMPSUhU52o9V2rwbQne8kIYbZa7f1/l35wR8frhVqJLGPKNY25ALXtFm2pRlabToI2OSvQmpK9HyF5PuvHcUF26xnMpiOaMvbKEhQMNGSBjXgXImCe3qjvTngctdKd9IBh1xfLGroHCqgtIxBr6YMXr/wY2oCAZqVNtwpexo0cqD9l1rP4CX6G2XNkOP4sxvDjRriR3TzXQtkRBHPy2fXM6M+/eIS8Ko5X+t+W2QHJb8b2L4il1JXOVlYBzEjKOSqi9LC6Q2ahjtpIW4sWjbbT+b6ge7PtmM/Bgp1UMn0Uaj2Ij6wbpfR/2m35rq5omrJr+wHHlWXP+TmH1oCXnS1hcdErPnEIPTqE/cgonBt6bd3TFy7a2XhBnLNjOa1Q8cjAkUHmeD+v/RPHQhkwmrmZKvSdYH8zoVD3hQWtRe02OfNbjWrU/ZsBgI3X2FVdwbFM+71xd8qE+hG0IbbhvjFx6Kc6fP4nQnBQJldFvRRYveVMDPRUNKKHYKSRAVUT3gP4q+G9WHQX+rWTd4yqiOoIXdXYdbU08cwabzpvVfOKArUAie+SDdqgrVSBjAQYJX8djbzPkgufV23jvy6n1vyUeKYQsrIQkBD4aaYS0H8efZvhrmIRdj+NQF0qKVnj+NJElyCVLZULnmvlIKBTW5aoSJpmLg+u8R6EFa42gN23TdigIVO8QjjXooVA4U5Q6yWDEPxrjXjBSPwrSPOVPqtYXuqGg9jeC0Kc6v/iTRXgYHsBbaB7Aq5pLSSxWZAgzPeBHDoM427h1/Gnxac2yoJAjDtV99R4nozlIRnOQjOYgGc1BMpqDZDS3qvIbH0cNyj2Atwmq2yHJ9+WikKr9E3qeAbW7xkVEzzPCPccsHq+ES/cdVuJHkdOSVlwymkMSmpnVteq4elzD8QA0PIeZGFKVy3FmaHcdpx1js+yZEnqmtOaZDtlx3g5lyGkG+t0/oaHTz4Ke43lGOVhpBVG1d0KYAbzVcOStzgAg9FIrACSIZvDgpKbmS9b8jNi4073/khLQZIcVEFaH6lSCkYTa1IKj6uXpLVnCtjhl9VT1Q/q3bzOODcq6cfC2o7ccHIadIoWzRw3Ez+MmD2lbLTxWnWJac4oXsKWbyjLrvuoKK3SF6UlAdeMVa/VjrGi8697sKW/Ha1HCICDSiBOVRAk9KD4HGQAtMkh9MLBNbbjMHDOYdNCAMu5Ga2/nuFfWGA+cZejU7Np11/5xJOF/y8VUVZAPbFeFtqs6tl1bFPKAs15mUx5iO+MxU6/IzkOhnvF3V8zXVU/YoidsD+xXLUEVtGVnCrMMdoKApHYf+Lov5qSfX+xOMVHHV3Tw3HIdgsB9rFPXNv81vgKBzCB5OphQFCVlJ2n0Vhs5EAwc6tS1pqcGNDFHiAjQYIsmsMXgS+jwYKQ/gMTmgU4NGtd09FYMBVbFrZCTBznF7Vwb4mK8pVjoZfXLiUB6MRHosaDqB2nVEiIN45QGYjlwlCIkXm8YS40chSjwVC4QrfQ3RnZgTuN5htBL6ujOH55aB0NZVKJZuZfb5ZDsQDRgKlAE7zWC95qsJDmM2b1NYFKESQuErKxWIe1T63kTO8VJrdvJHW32mpgF43G/LoBZAGM5zkNBt9OIjiOny/7pOL/I1DS6QnMaXS0/0mX0dVY+mo87ofm3s6CWFefjDRnPRcnHcxHz8caW9d2cIW1+bvSVKrLkzK214NbaI7fWlHDySY7Doo0dPKhjD+pYfNkuI8mhi7u3yBV4qF1iEalN8LXS99CnUxW716rd+AOaTMtq8xEFilKiP1vUiTDqRJfN8sNA7i2fFVz4RbD41KYmeGT+pXgwX8eotjY0pue135p3a79iQD8TwR2pO3vi03YpQsc8QCcJrqpvyoMTSmEUTexmJvb73qk1dfRBtuvFgr+j4pU7WbClRsXSLvMVbMMsP6rGMqClDGgpK1rqNpwz7NP7+sZZDDStwDrtkmc8xw+SYH+p+k4yap10SKo0vDfAe5eq9Raq72IAOgKdoEJP7av11EPVepLd66RDUiu1w3o4hfVwq/V9C7V6tQ9SW+DTCJ9GGNElrBb8M/V9atj3TGHfs+M49LEnMDEtWMROML4Tm4FyjI/xq78jS3lQYUBYYdBXFXS+du8MNLuiNBy1b/Q8d0vKC1q1OLJlxFlgj5gfEvzaRJm1/8HQssWckBsBZwsBZwsBZwsBZwsBZwsB5yMLZXXY+XYLj7btrQI0jjRdK0Cb4E5hh0/rCkh9kpP1kGc8LkCzWFMDjCA2hgZGMGB5OwsGhwO3OACdhobINTc3/Kxs1AsxXRvOzQb2gx34wW7jB687edekr4VsQgvZhLN45UPg6VcLJ+/WRxoJUhoDQUrctzV/sNCcP7jZ0GAoc/C4SPOI0pyuSfOnnMbIpV8gnutWP931kyAJ7NKoVxt7XXPJnIeii7F75qV7NIMVFsEK+6u9CKCJioImKgqaqCjYpV/v99J1dVFo7yi0d57q93JXEyjQBARMBFrBOVAEHoR/7GhJ8o19kq9oiJWUhFDH7KkPilZ0+tHgav5CJ8EHEB/rsfqT/0NLfu+kYaF0t4zSGDNBj0ylgA7YUdBAq0FoOzjvIviRRoQu9PMEvJs97GYdo/7qfnXqH9iv7m/oUQct9B/oV2fAkAhoSGgwJHYCbpAFqQHdvl+5atRWqF1rFfPXTz9ZG320zyRpwtLmAVa5gwjD557OndMimwwBDTLLQIP5YlFRLTUSgafmwu+OwNOl4XvyTL9/ANXaN7+PN3CizFN0snvQPbtbS+NRHUNt3WfFNq8dTD9a/vvYEOF8X5c/XYlOfHPm9QrTLyqqhh6Vhsf8/3H5f7Xy/1Ewt1VoMLg83vqN1A4ICSw1f+n8HKM3/9yh+eU08CXaMH8Uo28A/WV0XgE6rwCdV4DOK0DnFaDzCtB5dROd9xR/D5EvmTH6c3SeEJ0nROcJ0XlCdJ4QnSdE5wnReUJ0nhCdJ0TnCdF5WsYpe5/6o5jnNQd7D34aBD/NputzVDgOIMzGAVjm8tiUThYbQ0FmN4oGhZfjitBCc0XoI2kwff2HMV10koQ8lzxFpxYF4kCB+M6p2jhYxe1F4dQJm4nwaJLjQGwcB7tkx+UEi/Q2rwtv5UXlLbisZLpqasPi22UWzzg84/EBHi8LeFnEMwnOaPxQrfAMwT2av01jdwPbB8joa3DrPZCquox1mgRMilDu4gQJ4CWbG/+WOXQ9Yyk8AeZCkqHYLsFQ7GfLODbRJWNXdDm2q5JsBpuHsWe1ZJ3MLVpnIS8IkLDTe0Pa4DvOinJswmSoI48Z7r0nC8bes5Xvdzgsyj6mcLyPP3cHimB/+bUl+/ApkX3XhHcrOwP2gLNi5DkPfUF91xc0y13zlrtpbBR+IndzKLD8fr0I1jnwHjwv3oH34C/slboJ4n4T2PbKbwm23lBoMaLJbjL7KNL1TQNzXj4ooh5htltnwi8JoBK9dqnQ72h0oTNy74ixhHxNLHS+JpYJpvl4KHQ+Hrb79cO9eEFoUcsY63yLlDdoajnqLx2gj+UaZL4dyricCFtNh5ymQftNPG3oNTeQF2f4dRYy9mZJnbW8Fkx1FtvY2rHaX23fggCybjM42kAUJQNRlAxEUTIQRQnArARgVgIwKwGYlQDMSgBmJQAzxLuqFcKkvC1B3k7EZJ1PwGg1BKOVgNFKwGglYLQSMFoJGK0EjJ4XqsvbyGMSRCPlbYMMCMi0hIEpSsBoJWC0EjBaCRitBIxWAkYrBqMzFJexQI/oshJ0WQm6rARdVoIuK0GXD1T3ooVoCgStP3TK7oPR4WeO3yHq/LYD3g3twFg0Vo7GRqLdKBdAUGwqmRlS0lsY6c33/t3jmv6T+T6oTPMIKr8V5O+X+uB9oV+X60I7ufwDfy8mmRefNMyOVzhI/ppTWJQ/EZqlt2yNfQHCklkqvSA6qRkKHl+FmxYxRiBDMOqthe/1AVubNmx6yEl7X4tnfqsdJ8GJGfOot4L1H9nK8SqPDBnDJMx3qkf/kJ1y3blS0H6p7tvQGvvmAcS19rUtEiwyytMWWYo4glzbWr2w8bqOCm8UmhSuq5NTozo5vRSljro3AH6XBb7l+533P3pt9LSy0a3UbeQZVLW4BTdy67pC0HWF7jiIT8jsjxxEd7KTTwS1Ul2HlHF7CAf72M9qsbetH45AZc10NpL15Q0u6XxvuiX44M6n0qNYqzqZFRahS6VqgxFUgsEIY2ahnJ7lDR1wjs7tFAzTuZ2Cua5VJux1hNOBJvkUgDkYuGBVh41fC67+U5RJp0C0nsn/g0TzLmaz5yi/dUg3PYdQS4j2sHB813zluvbIvBg103kvaeY66aoiHBjr3itZTLz3qGdNLJozbdIBsKnasGktv6iJTYXWCurWlIHjfU5ku6bnVzkMvAvDIQiHQyAfDyrqpIjOcyaR0DOXzVaXrV1qc1Jihn7edEYQwlYWePC2HjQxv+ifWfrB4r2dCNh1v19xtP58GIzhq06rqjWtipq0Nw/x+LbvmANe95NeY4/ATdetxszF2UV90/k9/rINeYxNfNe0PEhLOc8+2USsrF5Ojguq5sMFVVPggqpZb0HVyFZQNbft3VGInbN4R1v+kbpRHtfCzRuyzC/QPava0uzEd/Tr45xRF+xbTQcuGPCSsJsDPesgt27UkbOQNaXzaQ9MTUzP33G8LqVDzDvwnE0V3BqJ5igxvumF/FeVzwBGUfWoRqahclQfMpCq+aBB1RTQoGqKfGGvMGQvDyl9vkvpO3UIX9sll9ubLTv6Cbt0+/9jz+/99+jiYpQZKzrwYqO93iWjxvRlxSWC+L4segnLxGhbbPG1oL3de6+jtWq44FlH69uxxgvuI6FdSju71IPx6mFMlxKrtriV7cSEtwcjjkqQ4O0maqazm6jZ1pTKlF9EIm/6ibpoR2Z7e1IPA7yOSeJ8eJskzoc1KE6RAZc4v9XBFSo1aZCqNMj2ed6dlip1WQH3SrRW+OU5iIXcyIHLSSMDzo0KGdfxQhcuvlQZrQC2J2DVyUCLfuLLqYI1YrlaIZ2QXkiwciMavI3zlZA0EQ1Q1wrgUyP9p4r9yHNthaRKQSFp58Z6uMjjRecWwrHTed9qcNxlFBxF+5yj6H4G/B1xhLpuDL5R7QbY/iazq8LilaIqAAqzr1rbNdRnIdRnD0J9Wg77XwzXhV1XkZJOaYw7aDFyU6J0On5FrxcuqHRu+qRbjkXS5Ru9g6scnvC4CHBVwBMRFwmuSnAiKFyQXMXz8kz1p2EBXx8MnsCvD/D1gb/esNjJi7AkeJYAN3G49tKJIImDIIuDII2DII+DHipypmGTK4EUSLoPPxGBPcbKNWLl+rEA7FTQ+Z8qxuKolo2l27aWjQ87EG8i9G4KOFWjYUXU6WbrZMNZtR4XqkxeZ+oLVs846yz3O9Eq/0xJZSei0OVFJveS8rcz0NxqbyWqqePMCotScJa0phMMg92YUoN5YGoyhLKXmlVw3ITzL3lBMGNDQaWpMkB7oQnoc24uMLhHGNwfmC2LLs1CmtJ13i5fwDCIYxhE1Q9gSKSihaqDRFwRBeFnwOdxyOcbQ8YD99/keVU5vXC/adx/xvOtdytB79aD4PgkL2oJC1lj9WlobpW9f8euaQ2bZ9w6ymTaqPwgWCpw6+VY8/sbX/KM9uz3xqqUOQDlLfZIvYzQj4PQ0N73C/1Sbfwh04JQFBu5Kw1n7vPAcwF0q/DcTU5Tlb8KzzUo/wPtaovL8XYOS7qgKvQ1rAH47EJOybd4a45C6L7U8XkYAprtvBetceDbzJczdYiDXdW944j5LDCeMduqYCXMXTInrZjUZMWMZhpC3qUlEFlpA8Q0PIfgObu4eD2Oz0lCPxwA/7O4BFro6Uc7kRHbbrIsIwLIiAgaWGTETcmgqjwoMqI0hVQSGqejxLWL9vgAb6wD3JFejMcthcmpr5DOsIMVs9pHKIreBBrcSXnmghauvEqXkT0eAUHiMCtiZkVa1+sr01D1lwv9Z9KIH6/MdOpn11aKGSMCYyRQk40x7rKD8IBq3RVvqUxTkvT0dUg+7ENzpeadQ3O8WKzw5NCcxdCcPQjAdXyhMACn9lHva24lssiYK6Tm7sxhJHQYiUNlezN1m0rlW0GMvwhjz9KiPsF9LnLMeiT8xTtUJ9Hok06MzFEQGgPeUcBR9/ioKBgvCqaxlK099TbchS5eBDcwghv4mQpqvgWrIHb3CstSulJAPc/OwomUw8D1pRbYq8FqHqP12lpgYiY0JI1c9Tz460BP+Y7WmAG5R2r+ojwthXlaatI+aKVl0DQzxemuDXBCsnGkhag08B6koFzjw575LuuzcRjpXJ3ds+bmZV5HweNvBIwFT3kE8EwSdVBO6Ek0YgRaEoKW9Cloed/buTvqyZkfI+lXVtIw6oaPww2/UTyQhXFp8xd1FEQdTZTQYfDVQ/CVDoOvs4hrLFEHW+gcdbDbSGzo6Duw5KwcR09V02VX507K0852c+K6cHGLtQec8IhSeDzm5uwPbmZCUva1NJu0kGcAWxjic7CdLWz36daW/ZzNq/TFYNqygAco704J5Jf9jdE+/UKZvZUyeyvpM0xaIZ2QXsgg5B8oiBy1nHbuxwjWXbZsAf0txJEtRJVgq0JUabNti2yOIpvHO9jDOAPfjTO4VjfJoLYCUFttQO3Ob3hfb4qYykBNpW/I5klp7+fxnzmyTIgsE565U/S4q6YSEf5GpeSiuMtaLfMjOWu1LJaqotyQvWyvIdw/BOnaOgS+Cx4F4a05PwkdQA3ko22eWDhgo6eyKtQoq6LxR4dhKcSwruRSzLpBLLYvO27t48vDijPBi+/EgGZ5FZ+Hc/oYjhRFdaGaaZlxra4irK6iaRHjea0iT6hyTLe6sD6GM2ZjJ7cah7dGuLVrSTMM7yzhdZOUjcWkrdOSxuwhcC+7R3qCuoBRo1JrxNakAyV8KBz0VjicJZrPWs74Vmf/icuzrj5nWMGgNeig2deBeDiZXFflA5UqGc2LXCWjd5Jj297gtUnKEHdbxgzx4mIyB2J7HYLn2jzilRyPBbDiHuTHMSgodL7S5+NMn+cGMTV14yP3b5wZ8owvOETltyGt+NNx7ZZTjUJWVT2rRtDu6Up9CFeHvSXoJ7UiVpR6r+AX6ye5gaQ9YTr3+z7fgWE7NWa/tNen6PcfrbDqlFBioGOvhPx2a7NCWt3aut/aJ51zPCQH+sXOORe11qJ2GvV96pqm+tOp6koWARZ101teuPeinAm4iLhIsMit9NqCcKFxYXJbUOQnu+xcHkabwO00eMbhGXfXIX1W+1Brmq2zhuem2TO1lOBy6LH9B8JWS16mVz9Tbp1yqNDpdknid2JHubW6G7WKlw7sw+7wetQdHs6MGsKrUUN46PSOXzDsAW8uSwCqdL7KHg7i6fsdosoUGu51qus2i5q00cj5FvnbIudHPBNXUxnhjL/H+d/Tv78CrAKY6ukyV5bRy7k5wH0OBU140D303K+bh6y0ZPsuFxL+X5t8Dgt8mtF9Qggs7MwWNvj3VLFgRpWNTkqcnZQ4OylxhkY+TkqcnZQ4OylxdlLiDLOpnZQ4OylxdlLi7KTE+dAcf7LVdJSh7R+1na5A9r/NprF7hP564+kRGNhIeZsJE2vso97UH3lZlIedNVLmMTpAA2Ueo5d5jF7mMXqZx+hlEqSXSZBe3ublbT4i4NjroMg6KB81VQXF3CZtcVAa5h2eZz299Jn+MfrcPXza4Lzq2GnpEZWTE30G5iQnnTYaDO7dzSU5ApfdtoGsNz9Eo0KhnCRZO9Rtf57mSMsl5z/VIJOSR5DIOJK/uaeXnxQMLXlVay6R/Zn/7Fd+6gUjK4436LxJqOxK31UotuOrnZs0zjvOQ1zrAmenzbf1pQJYljk4em3SStk75IQyA+WEEx74l2x2tua0u+n/obRuyY7mQQXbe2ufTZQ2cNyS0A5o74UOWujoYSiXhaFcSMM1HJgrHZ8MzsSLMLkLaIsXLaEWDm7wMl276C6mZ0woeOIGIPf+IYZs45cIxi/RJ4ya/0s5D7L8YwrZD7YZBcO5qoFqZ8LXZsqMbIHGEmSHDL6JkNfnv03WydDDz5RT+MHSVemxbPXD3PlJIfeMVUsvh7cRVHs5ZHqgO94Gvfw8BPOGI8wbNut6JP78ptAabcScFngsyHSBsul2y79/vfMj71xxM6+toy75jOK1Uwbz5IzF2hGrcfEFPO9/GSTYAgM8NiCrJEhq4fpjbqVcxhGGki6SPan8M/Nw53+AG0hDN9BMUzx9+kCgfVI4nK7BjEfySjrtkXTaW8322OR0zHg7LwaZG4CKm9/Gy9+CPqRgmDNgEWGRtWVbpFas1VUS59471hnPGFdeQB8uvkrjCYMLC1dZPOFw4bsoHpwIuMBq54gnEiwIvp4UnsCvJ/h6wq8n/HqCryf8esKvJ9+VL8AJ/HqCryf8esKv11jFjV+v8es1fJfG79L4XRq+S+N3afwuDd+l8bs0fpeB7zL4XQa/y8CvavBXNfirGvh6g19v8OsNfL3Brzf49Qa+3uDXG/x6C19v8estfr2Fr7f49dZUJtDZ7Sk6YyPKN0KbStZfEXNMP1FlEtRDhmaoWfSSQ+GW/aNcUu4KnSvK3ZqNarpxxy99q3PjrTzz1wXn1xyq3pJ9Tv7PE/xO5P/ITntnUEiWsC1pfK//kRyPQCeh3xq60QS0BtoAXbI1doEgzK/wbi1bA+O8wX5H02iwuTLMcGxzZd4rTUJ0LojStUOUXBPRLiOwy5BBOTPU8oL/tg3r3ozhBvr5rlf8ibWEmEO40d31KhvlPgvlfYucUzikz+uji3l9pReKqp2QlRTc4mHeS9Vm4b2uFdhbmvM/2kLOwP7jMUhHaiAXumvOE8hTzYN7dHDILPl0qTi9gy+C/vkt+HUWp7kJakwgn8/BjqIMfC1Hz0/2LYvIHLGGglu1glu1abf2/DMtUFlin5pkrjDJfJQ8O8g3n5SkdIXvl3LMMawuPb2Y96ppCcJel8AUl76zR+SaoVfPmABnLDQUs2hBOvGXXyZJ7jIYtnqAUA/QuR54om4jmB9SCzG/a6pCAO74CMC9BBzOOcbKJIwpY7QrvuGG31EmXWHFvEbyvGnK3BQKLMNyBXijwCIymFuycX6bhkI9pFXjyOLyRW6mOeGFt4r4b5nw/Ps+yybAE+zPUljhadB8bSYbRFg+M4KO0GAz2LXU/kNzsV0lyGELIDDtQw8ivSO1OpxsYRtcqxQqOrjs5no8wPEIx1Pd2ivy//1J7xmZmqEYWBi0vQxaZQku6xRIgBO52WpdZEy9LVZ0RulN5OviZbI5X/HbxkETLPcBL8L9HDBBM8Me8SK878qDhI5ds5Nr+SAP5X1EeE7E/J3QlROit4MGodDU5fsIbTbh/YGiS26XhwIFIUzDN6SuHAQjS4r6IcuwMGup7kPZQ9DG7J4guu+AFVli1OfIwET1cZOwxLCcmIFW92bgTN39ioobhk62npX/sWZFx62yN1p49D0tdVCCd1q1anGcisVxKnkB9UM8kaRoKhmbApcluCwoOFPss7rQeJmBpwWLZxwu+Av8x7t4rPycuEdTRdjpvg4CW9BWk23uYWtHGOP2AeYcfp7ZuB7q9jzU7cGGxvyPJTH4RlG5FPlj/+LryBXJaHoeHFjL34Qeo1sTQTnzBHqjiNCRppkEteLQL20zVbfZNSMn/jwuBfNPzPlPERIPS0+RtvhIVJpSIpNa087XT5i+JUQnmyBXnKk2lwEWK0Y3mtaqM60VGt0KHc0PRNIS3n5pF51X27+2V/pgew3zFmZ1xblUSnGiY/7iQkY5mqiROVTR6N/F1wuQxqbiM2D7zG7zuJMgVaHEY5sMSgtWnCsjfdjn8sUZG0AYb/ldB3yArafA1hP6ntQ6aOUa1QFy/rh9VyanGL+Gt1ESCPQ3rEDnYOhUH4p8AwWmTcirdBI6sGwLbfRdPWGAtuUiarB0PTHepWUyTWQ6T6aJ2+1rWoueRbwag5MzkWit/BLdnp5BB8NNnC3I0m2ipIWHGksSOgL9yMRtkKWRfgSpI0HqtBplCBv3MBswwB0A4A7H7MExm4Axm3ApZhMwZhMOYzZ/ELNGfvKFJXLB4mZc9ZjRZrx1yk4CZE+tUZIsMuQZY1D4mxXhn8aI9VHw5oCHNPCQBh7SwEP6ydDseQR2A4tH/QWz+Nt435frv34FB4S6nj8F9rltF8Suqqgt4icZGhDYuKH8P4hOzHoeGhFVC0Hl5vkQej50I9ygIrpBcRphIJknAhpf245ul8yD2B8FJL5rJNxHO08HkGytZFNbRtFH5sFVB21WTDQLBpYKlbJxS1pvo/VDaOoj7lfaZiwPQ2YlmZjVMXV027iyhz/YgzNv65t7swPcFWw1+6Nl3LGW0ada5jAWj62Qkt+kZftpGMkBPd3N4xbueNu6jY59GydUVOw79kpFw/JRL0eDHI1ydJbWQVX7dWrQVb3nRIWBAgP1pQ45Ixc9Uh3goQtiUVnDs5i+Glt4f1doNUXhECqrtuoS9p6T8LVAqlrtpL3r6HaJh8MwgyrA4YA8dh6EXsI9jtC1IY/eR9rQI3Q/JLxDwjsk+56Ed7TwjpZ5CFoj+Z40loVSy2jWOm+EnLgFnFwa1BW/m3eNfpPtqBPSywVejgYho1wQ5WiSo6kdNaodNUqOyt9TSgffxVSmpGunQr4vff/fjMbp6zCJGcbCNtLjvLsmSq5Jm07GnOb5D+WNEiGjRLKoY3GiuYVbxl0KeS5A3r9WDeBwJU28EtgByXLkhIPMWdbAV7GrY//a10f2LvUbobJMZ4TKti68dRZ8L7Ykz5kHpTa6G4BXdT1Is05qgaQCq1dE1SJgOwkaXQK6PpBHfiaPQhUsVEouiq5o7IvySgQACddrYfViOhWxQHLUiFiobE//MVqOahEWIruMyC4jssuI7DIiu4zIru0czCJugoibIOImrsgN7LhT5m3QEo7Q5IMS+aBEPvS2dXjztolZe81qeZaskLG4OBAFl40MJ7ls3kuOG7N8TUyQ40mOZ/bn48z9tX2HHDeQK6evJQkobihrWt1kc18duq+bGXu6iouhTRI7ul2S4HC6ZrakWY7pJywfHbiejl1P1Vr8WOlokWNt6Ia6IiHCRkJQGYXBYqE0wREl0DUaL3ym2QJoA5mZOYMwfTdSs5ox27F+fJtUelkp9LIiYqyUfFmxiaxIGyu1X9YK6eQCJ0fle0u7gPdeYj4vNVibfNnWp9UJeVRjVC4Z6/4EaLSyHd242YOaIw0BLbAEVtn8eb1+RZX3StqBYvYdDTwqhzt+lcMRMShhe905+R33XnPmTx34KIHjp5oQx9gxZCmUjIU39X8rF74cel16KWeU/F3VlyNMzIfO5V0gnX6wqlWyYHmXcyxplCH+kW9s0Z41746sFsNQDsNQDqNMDqNM7mSPmzqmChJPzkKy49b4V7e8htAS7v/HUlKIELoiVGaCS5HrlVm7HrFbVFxGdXQzaAkOCwJmHNq5bld/JFMnRAkv6cP3L+8MtMe6WX+0joRtQ0oJw7fQcrBjP2LjjzkxiJZkNbljyk0ieWatEmXPqZuhBNmx1rtTG6Fc7wudr/cH/iOVywMv8vVhC0J14V2NsZCqQ+ZR3CUHcpNzM9U60xIjicouIljn0daDClYDSsR2NHCVHHZoI4KewZqjnpOAe+bhjSsa6IneCEn98IaW/aw7q8/3kcn6b1kV/dlacUQzNXAUcoNtNt9MhX9JXwi0nY4wnu0+Cb+NduJsgpAUs0nSc02zIUyzoevZ0L2jsxi0MxuLqgwLK2aUl6bGTGvcogUn8ZC64CHdx0PwzwMc/FajG22iO/qK13TODVczedZjdC+GoR9yYoD5JuuDyHqU+7m3AqfTLppRQ5nehQ9W7PxPxO/FDEYNctF0tMYZA1Q8Xd5zarfnYtY39t2RIiOZxpT/Z4bpypjAN/0+YTQDdbAgXGhcmG5vlpeU4/wS0zaqzD6otAc6wGaGTZvboLHJb9/69mWhmpWiudJjkovmyiLOiubOq1HH/kjuGVP8fV/GCvIituZtVzN4FGbwqElzhZWGCtPgd9I/rG2LPyp2Vmd9Me/5FR57Bku7xXAXnY5N+oeqWulediitZIeGxezQ+zkltI0eWlBcBEyWjRDz9gurl19ZPxSeNhlULgLCBlY+7Spm6jd0m5kaxIDDhe9YXGSCR5lQ+L32AIbqEEzUwz/koP/CVWfo2TrZZKra0hX1r8oqCVpQAhulDbGk5BtJ1M+oHHOalcNOyBk41mHgAJmdwOFPo2cVaLAINNhDKA0DaQrurmCE/UaIbTWHNXAO68N5q0NVX/scNtuTcGGKElStVOal0fZ9A9//8Nxvasf0bxZMfDxzMPKmAt40BLpYQDyu4jL6CyU33XjaqjU/cLosazcC7bbly9sRpC8krAyxgjV84BNF+G/73XH73cO5PDPt23uKCUzWPNi6mqzktlzJ2rcxn17kSi6hpBFb/ob2m3TpTW7CfMMUMiUpZEpSyJSkkClJIVOSQnagxKSz/VKm2Iqrx3A3IdxNyxqmt9Hwn9ZJ7s5eczt7jTeGAktsv0nYKgudS8XWntmYUkspEw5TwP7qdtIfB4GS/yErwINrwIMHW26mP2bqoWqFWxLcCrS3JM6T9NDaiKY5Kru00QzQ/d4qRoWRfZYzUnIk/22FmGaXNyN9oWPazSrITaghBQw1QKczKx6uFb+384b5X5+BDa9sC71X2gHtgQ5AR6GzcBb6nX+S4wUGnm/g+Qaeb+D5Bp5vdXWHORJfaQu0A9oDHYCOQCehHTzTwTMdPNPBMx0808EzHTwzy4VK/1sIdFwI9A+v//k/MZjjOS8z8PwhYuOX6QjHYxJ6blnuvL2h9A5gGgS0H+OZ/Vham88CaGZmQDzTKSHFqoPLr7aD/AuKYjqRm69JJW16LHK9XDMToc62bGLnhYyNRNl1pMDpoXDZdCTaO24Fi4nOfy8k1t8HrqY9HHvj9MAgnXgtS7tOAZZgAeAwDhceF6E4U9RAv5czdVzs7nByWDf37Xa/1JR+CFK45F/VbcfZFpxpbptTR935DqyaNBbjc74brSSjrnkkzwkUvRmiMJQULo7Hsj1jxr++cSZCPvk/Tf45DBK6uaiIEDrpw+/YBug5SGfuA8yRRT2AGQlhRuKBKPotUGhfqLTkROiJ5zpyKDQ6FGYTHGjehd7osLUQQDEY0+Xuya+tRTMJoCQgbjo3ofVnypVA3J5puvn4+neiguHrMz3RXya113Z7VXMWRGdu63Ztdr5rNG/cLihKuyANLYKQxu1LcIJ/C/cVnL4qN29wYXHhcOFxEXARcZFgERQuCBf4BQG/IOAXBPyCgF8QQr946+fSVC7ioyM+OuKjIz464qMjPjriHxfxj0v4xyX84xJ+QcIvOAc5NYKc+iawNQSzzAzM0r22WezH+dxkg4sDqI3SS1ppxZidWRI1C8rV+QTvFMadHNgZC1niGF5kkWOWeXLXRwH4s/3P+23f7fQEaqikbNU+0QmHjfXbcabgeuN1Z6+q/Z7D4PcNxN0uBpxV+0Rniwo1bVZtO+NxEXARcZFg4RUuCBcaFwYX+Dkev8DjF3j8Ao9f4PELen6izE96qj3NF+xn3No5Gtu6D19MHaELxRp7xaNQ8ShUPAoVj0LFo1DxKFQ8ChWPQsWjUPEoVDwKFc8FpptLemyb91o48RLnDsOYz3JvB+GzbV5IYvkP5l4QC28Ye6YrmSATZry4k9ecD4uY8zU3RCfZvtcEvhIXkWp5RDYD22ErpPS86F3Llqa0AWkbF3kPdAA6Ag1cl/OjkDUrrYE2QFug4b0B3hvgvQHeG+C9EZ4T4TkRnhPhORGeE+E5Cb4/wfcn+P4E35/gvQnem+C9Cd6b4L0JpZVSuCBcaFwYXFhc4NMIn0b4NMKnET4ty2nXWmm0wwEXERf4Ro1v1PhGjW/U+EaN379cT7cglheFYgRp916A8TEXlweu9hGMph0NcvKKJFSYnlPL7aro7PLEHdgrDu3lXsCKvbxmonguPVKc55p/iJrEeklejhDePkRnlPvZBeZuWQcrAC9IyQuScSYNcw48mxRZWVd6LonMf32pgI25J2n58/Jeq8cD0BHoJHQeKFZpAloDbYC25b2aRUZuAWpORIYH9n/fHfJs8Bxqca0PRj2c4yzV9YfDraw154q3w7bnemnOegsseNJ8y2yq90LDL/kyEeKcxc9uC8KFxoXBRefMbNpfuwlGr7sxv4McX8nrzY1K+9R7B/aXQ/vLTxC2KcJ7EDLq0kxgQIjknNDWTfIgg7gpP8sgjdJJ45mIZ+IHcmti50EowCj/bW+epdU7ldqVKYTvlE4WXPmokaNWjjo56uVokKNRjqZ29CkhdyRT7EymdJKkkx8zqbEYfFsdU9WBFk0eLPt2r3sDN9RQgpBzNVs9M7VCdjVtgOjJ/SUzWxYfSpq+8G1ixGAdtMI66D6Y6DAq4MG8wSqkAOZNAPOGy4jYcjG1fkBhZYHaCS2wabgyyGJlkL0AyCSUNOm+1ECcI0xwjpxXxPlcH4UJnrBwQm0PRV+ydpqFgxZITmR5KfxL1kh+H+WZZyV5pC0MLjxYJ2KQiA0iiXhLouQjywLhz7mZUTIbS6ytzBviWNuy12LRa8HZ2M9aI/MElM656TkeDJAIvCwFhgoLDBUWGG7rXTXXD6kmMVzJM9wXwmJ9YdyFCdaQIYdNdz1Wk38FM4ofBawZwX8bdxXAz/QCYNqhO9wywUDLBFNLjCq3K+D8FYnQlQR2mAZIge5MP+tySQiUScOGEY08adi01LJ2lb3K/x8iDf5TLHaqlzvta4v+c7zIEsSxXoagfgI1WQN1dh/H12CdMzfHrorYQOW6mVWuG6hcN8DJpjGs2RX86YQ9HhL2eJjGXIxHBNhjl5R4p8E1CAD88RymIrmAi4gLwPJLAnxbYLLFdQkyqLF4mVIXMxE+AE6sKzPjuSQxj4zXW0miyjWcmpSvsVsbAhpJdBLDwfEFeyLbwhlC2tgWQY6T4EzPGxoWnIwRVKLGUEnNjai3jnATNcZNjsXWnQ4xj+Emi1IvQNeuHW4irs2tgHAnHZFz51AJZkBSN8XaohyyKIfQjpjDpx2vl3Hvmh4zHf6fIfVL0AOTLSyELoUph/XGvdglHlyGVM8di3w85jE4KU3NiDts3WxDGqEVjgMgeUHI2Y4DIHKm8rPjAAic0XimY+ntMIx9igZhigY9bq9cT9jY2Cu138ybI9V/0Y3wSu9sEosDIO1mACTffsRb3JHc8CJ3+DB7Rpsn+5248URfSFdosJ4SWE8JrKcE1lMC6ymB9ZTAekpgPSWwnhJYb57/h2a/K9VItgRva+bwRj9nz4DjstkzUIu6uupnc1sN33Lxpequ46Tf8O9jHjHA4+beflT0nqTkuRjUZRyw87y4EKJ0VAZ85rDRy4hPJyFK5sSdZgRlpjHUoLtJm/PGa71T3ToSZQc7szt1fGyh4dsBT19Tkau5ehCIXGqa03nnpKdVhE/nmLeEjqtKcZmZuG+hbr05gubF2FcuiCWVsXZLXHU5UfDpBKbW9Cx7ALr2cMPD2XSLDGtvimTbwvQud2dhbpKk2iLgIuJiF9rrkhYbV9q+Xe9mhmk3iB5a78NiN4YZpuB1oyNhYXCBX6DxCzR+gcYv0PgFGr/A4BcY/AKD7zH4HoPvMfgeg+8x+B6L77H4Hot/aR6Vo6Vz6uu4HaVo5vmk9KnnvlCibGgpJRKqAjRUBXzi0182u2d4fhYQhsLv6vdO/szdX6iE+o2sgT4WOA//LeYThKlfDCKvyDNdI3ZNKZfKXqYd0AHoBB4x3Etmm9/ZvGah4V4N92q4V8O9Gu7VcK+Bew3ca1yX6Sk03GupKwBAI6Q3SLTapxhwg8CIDQLjA2hdZ3dIuA8dC/uYB8+SwUO9kD/C/mdcHwHL/9TGmFgSzY0mdKMJ3WhCN5rQjSZ0ownd6JIbYBrKdWCaqN/ODfjUnNlYynNIGWH7+3Frcg9hyjPf99S8XdiGM0X0vWDylzPgcL/+SjbbXOE4DCa7aQrsEip7kNzVBVc3cOkzkdZh0GTr1/mf1ghG1d3usBHMtAdQ60RgOn4wqkApwg+UcY8VaVzy5ouN55PYeCsskZw0te9jIJ9GVhfg0flmngcfSuUGxwKme95AD+hun2vpa3AExHxqjN1IzDpwTD10IGAkxjW7i2kNtAHaIh2l7PY5JGUabAjVVPE9O4Sp0cLbnt7lLMIOyBoE9FVXBUOID4UNN6FCejRBqeYmEOYmrAYU0Qcahg0nOU1WBpxdcJWy/LEYZLDCufUBAbVVz626dc8y0FQLuPubuI+RWuojrmCjn1qv7pfRTx9aTRH7/k4t+La5FxnDyPVdxX+Q/+0z6cKtZhjyhrvg3Z0E4jHzpo6eDOHbRfrinvlwg9+M4It19wfsvAOeAj460Yy6dS//Z5ejznMY544RYUMfjQsDvZG+pB/HrasMpYWewztcL721O6f9pmCpayL4mawYxvRJ4vjUNbVx0u76vP9Vx9YcHiQID9KDqTw5sNw08p20nkcrD2jYaOmAo8sU1cicK/sDuHjj3zUJ0HH3o10UnmONhWETRqvJ0K+t4iwO09KmP4uh2SShq4Oc1/ofxNj3DQQME6wJE6wJE6wJE6wJtwzhlqGIC9xyumvkge/R+B6N71nMMplv4A43gx1sYafyLg9b/eSwhW2vrEyvuRR28FHYwUdhBx+FHXwUdvBRlzr4qOc6+Ixy2kxBMqiNp2qLBIuJgoMopeqjlAqjlAqjlAqjlAqjlAqjlAqjlAqjlAqjlAqjlOowSmnlN3g6ZPmHApPvjVQDjiIwTUJwS+GCcKFx0QFiFhduTRYvOizXkpzG3v4mNKlpxZyJVWqbCfxFHKQoGUZL/v5KWrEkM2VmNwVJrp0UHwSPV/3nM/2vV/V/RBE1FRAFUOJ9qtZYdc5cPQdsdn3eKsSRdVi4b1gTByk9K122NEy1UnXTOpxq1U2USwDkWrA/CrIUFITeYp3YUx36VHcvj+KuNAGtYbfr+pzzRHsDifZmbrwbyM0dd6cMkKY7NuRLI+1VNI1ZBtsZcGMVoQPQEegkdFJAE9AaaCP0EUceedJiqQAP2gTRPjPOUOp4MCLbRXRwIzq4EV3sCA1rKWJh36rKx9HayvTFt69l4mSmt7v8WhhW+VbOeFwEuOeks8BYy89nHM81tsPkQdfPRT6q9TlVxRb/AosJi98RSvPOf2fTLLd+UJsR5pdGW6Ig2qCArW3GX5JdnMTOF5lyJEd4AkIEsDACM0fg5Qj+ENa1YlkrVrViUSvWtCaYYpDgvQnem+C9Cd6bUOoodMMUumEK3TCFbtiBDNM546yEoAZRsyesimn7+Q+tjSqApBWAjXlzvxevL4nQOjif0XnBZ/R3zZWpMFgNQT8eLtC5m67IA/sDE6HLUBGOGQM2aAAbvIjvGRkWf6m/fYHw3wc9E2xm08zMLmMhWj9gIz2AM/zWTiRoDrxpgL0veXEYjXInHDHR9x1HYEv90PXX32j8ifee1C3vPd/jsHi3LvbMk/cOMw967/VMgAccJg/DZR4Xd1Q5frXGLzDIPHOFPXV9LSZTr6Y7PRPb1o4Hs+8ms4MGXuE3qlb2GbZuLmLrNAMou3DwP81BvbPrb2oJGmuJuR87T1piVWAxXdR+bWv6nxzhYpR8uEt1FlL8DeC7hmoyZnSm0dONfNgsGvdiyNiNyt8RAtCxo/OX0CQV867g7sXzsg8GCwxzRgxzJrWynXkL1zpG3sK10QKIdN7PsTeBSPZz7E0gsy7SIzRa6re9guyHXnDPPa2prDalgE3zIhew6SuY5R0eiA58K8e+1fu4BT+roj2q87NcYZnw45FjRsJ8xhv8K5XgawJjC5HLNbSy5SV0nKMBW5lwEY4JKdMXMhiZhCyxz0ovdnj1/aK5Xb/ZynVJCFz1Z34vlKQwlKQwlKRwGITCUJLCUJLCUFIXz1XYHgECUyifIsqniPJpLhSLGPM8EOYkIFwvK5+j9ybrERSVxaBnJInv0fcwpgPzs7M4Vf1o4j4vAE8DLEQzWKgzOa1bSxz7QtsnHSf2pyRRblR4gZP3aNB4CsziPIglFR9ArY9Ej4Xy0pHouSUSurizktFXSxaD19tcqNEUa2EMD9XNu6QoyBBGZgrITAEbSAdsIB0NJjgZPGP7kUxdpwSwMHzPWvb9tHSC2E4dwFU3L8JLTTE26/w1YcDv2ATTmGT66QM5LbwT5GhoqGrsApWnpjCMYrPQprBNU0KPzhaPzmOPk86jc7FOBltjt6fZau4IauCkRxUysAzueI87fsKJ8Xt5h+OOROoJlTsNDJVZSlWxMppUzlg8E0Hl6t6LME2x5hQNx40NVSx9IxRGcs5EAQ7yIL+G+HQSI93geHaYHWKn7kEf2aiKnfqO60uuPAd143kVTsfqFzFSDY0RWxPGoKQJY4AIQIDoQ4DoQ6d0fXdcP6h0n0z8Wgin9vJgzt+QvFPY0xT7qCRXAa8a5FXT82q9Jyo8Q7jQuDC4QGyyJFdVHWyQJUOvg2mScKEl6/BphYwPyElPsaSzvxfZS1c9PFt6n4re9mg4IzBg0qch1Mv5R+sh1Ben008uGK4DLgGdvRolucTfo4ZJmaWFXS3QrnPm39e7XN1Q/OT8l0cDtAXaAe2BDkBHoJPQPKXGwZQaB1NqHEypcTClxsGUGgdTahxMqXEwpcbBlBqHU2ocTqlxOKXG4ZQah0FQd1KR2Mm3N0+nXPe2FXZG7v/cLPqSJTT3JI7E4F7yEUPvvDAHUmzj11s0PxyeSWJ+bL13Wkn9RA+B2EoJLaz0slICJ3jKZQeyLqJ48qD0GZHMCrUikrz4OMJ7OTtNYXaamjScWmkyNU0SMfqHG21wakjDBQgsm9T1e8ns4ork00Mrx3R+DqacbSyhBh4IDWkQFrjJmY1klZCC0L6r/xcanunSWXdqKmNqK4S6IIGDE8Qilt/Ng5SzA2l0x8IqZp+vi7fd5ytUCiG6oxKSJWdsBnhoqZEed9iqhdC84XfySM4cyiO4LKwYUu+wjNyTFC5gYgMlmNjQSarSv6ZZYvFAOhFKJ15o7kbdFgYXTdKU6TZiIbleBEnOnOFsusAACJyJkGdnUjljTtJP/pru0uhPmYnYQYOLnatCD0SQ34igJcMpcCDzxamquDxvuufUbFH4Ummh3rBb4PYBdyyKZ2FKDVUwcz6V6mgN1dGmq/taMCFWrYaUp8blFhI7F4nPmBP+5QRW4l4gOYGVtgiG640LCDR0/UM8MrPqzI4OwZjwcm9ppH5BGEGYsHyuCq3q2TC2GpFlNSa46xNH6CEEw/5ECVkaIUHlp017ER7qZghoDbQB2gINw+dqDUYEvmUebgURJnTAyZiflSSkzFjbghZWYy1c/AuffaUUC2f7p7Tzkg6esrYpUw9ItQhEW1go6tTgB5Tigz0PZ3biBN88VNEFb684CLY0j7W8yOa1vYKgsERQme8VLuZoiEW2Tb0O3gf70m2FzFLE8mKWNu7xsoBKXIESt6jE3VZvR9J7tj+BPFih+xJfNIkXYgTwVLrSTTL3p2lnChJuDC/gjMV7MKmfezfxPQ7PeLwHDRSOZfE9aKDwXDwT2ly8dib1Mk1+kNtjKYybGRFxwYhQtTqLesGEPg2kSVjIH83cVumZ0ZFm1sXHkuYIcIAF9VnfsDA7p2DXRelMVOlmeSigNVgkfW8JqdeFazph1gIXtGnwMpNyc0vFoZA6NVuyXMowr1OqnnmJvJLJvCi+NmCHR0sloGCjvT0yzFuYGSdH4RUQciRdug7EX87LapaKRUuls2HaS4urwh9KR5JtntzIKcHEXkf+C6D/LT+M5Z9OIFZ48ZkkOc+VML4Ge2If7Mn/Vb8zlUzNlOD5WBUjtoARz00fMY9A8hiMJUWQSL5ltDsh98GhUKtVc4MMu7WajAR7QhJLCbGLyIabrghwelcb83Tg11+lC9Lbrimor8//8DwROFChk1zDDTV0N0PjVBDOIdljqdgZT3pnPHXyZkXG+Fh5Sl92jS4YQtx5n+d6Jt1PvxRJcsv28WDH5ALTascYtGMs2jEdh+sKp5Tic4ZTdnn2OHd3aOIgi0Nb0Zpw+hi/r7TFNkHyPFpqVNjUnrecD8KcDwQrGl6qV+2MMeeHlheCjD+FJ0HLB1DyeQJSNT9coXOHmS+YH1TtDVsN1re9Yavt+LY3YGFx4crCsL0BZwKeiXgmZXlgHPtJptqbvfnRs/3Y5Jhxfdfz8U5M5b2HasvJcy8pjkLLfEYf2hwkermgm6yXNwaI32Ve1jMRTRMNCSIepIZCnFDFftIfYQ+PU6hUcY9vyBYhbNtBGO8hbNsxAl5qUkkyxYDQmEOvbW/1aMFn0AjIm3OMz5w6amtSbICVfmK1TBqCmdYZMHbVvhvglOYADFoekOtZ89hSd1xX62STei52RQRbAtCYhq5aRFft3iBw0Lb1k3AJYbiEFiRY1jpNstDWiLARclA+MigWbYgD/ud5nJoXWR1ryadk3a5hSk7d7qENvIhvHvxo67Oa/srWn2Vp5PZ37/8D94tpytmJ+u6U+lnxu1pQ36ZUaMQtK5XkZWmJZ3xlJNPYyDQmyhOHrepgBgyjCm2AtkCnTWlgpcEWcPpi6HQlRArd070G2kjbaG/guAV6JybYTglip3BL8OJmOHAztLQcTNB+kCvsK91snALyxhKPuGXvTHM9jkHeXoxEtn1M/ZveC1f/qGrHtEX7c5+zY+7EcloGiMIMkEMzpPYfqYsshoqACrsE1Gp5JLQ8jFgeOU+mKWfdK2cRMAfAg5N2FavIwyCBY6jdu2wOFnFzdNM+iElY1TX+XVHqqcqfmezY82FL/npdUwbJxRIkKTRPwEytGwbTJP23nvYvtomkA02dQSyf02WyqyCLjnkIsheWVDX3mqPDmo55ssM8tgL5DWuZD4cJqR/loHapExx1KRO9u6a30GGhb4Cr4YQhxBA02hkG8UOD+GGEGOgtE+SZ8Zt2pf+cdPA6dPHRTK4cmBPRgq/KnsmZTo/SC2fTAIdJabdTujAXUhrrTDlbFds7FTqb3qkNddA5o4Jj6db/HkZXoYMC2BEEDmaaEK5hxt4HF2Z8/b9RLrJhf1pxJ+ZwQtxlctbMKQV63BDqbkLd3Wn1hSyIwaC8hskcaWhbQt+eFzn07feCQkF45LnRn/tM8xyyXmomaPUPzvscCqNN1CE3rP/MBMjNQrjv35vvqfQDdDwzBeTOkcFQGjEox3HPRhcj4ZeARzYG3g+OplgMnSgxkERB5277PMPxk/LOgMInoPAJCc+kXd3mJgeqBhO7ahLCgaLbzIrdyHpCmI8Q5iOE+QhhPkKYjxDmIx7z2xZdB338AsIvIPwCwi8g/ALCL9D4BRq/QOMXaPwCjV+g8Qs0foHGL9D4BRq/oC8LxwmrVeoFjptmoZUOABa1DrAgCIpCK4vGQw8DhNEOUCkdLaz5mXXdJckaPkBGJAR61wISU7+TUG1AyJFVpDdWUamipavmkQPHx4Hj48XZKa0CmY5A75wjzjjLgIXJdYMlRlpcigJeGCVVMuYt0jlYY6xp2WqxyKZLuaen3Tl+syHHASwSEBYJLLMJ8km28juw/BbtiLJcL6SNmN7H+3tnmHy/llizeplNROFHe578ShUYKpWLrUsHNCbY5bTAGYtnLGauYCsNTUsj4TWGhwayeSOONbuhuf2G2otjUxAsKfpxu6KfIqi7hPkLeSxsnnJcO+zkucdk/nsRobl432JJ9mfBvjy3KUmGX2DJTm77YwvWDB1AignZxa5nYlhDWonq6J1YlYJDk2HKTqy6Qr8+qYpV885ET2GaksKxKYexKTdyhGVIDOEMt2k0yeyQqC10G7GOLmIdXexSy7ryFkZeDYOted+aNpv+tbmCOGnVmBsbjQqNRoVGo0KjsYsNqydiw/gFZH4paoxfoPELJiFkhUajQqNRodF4VzDNkW114B1vq3IuB6T34mc1IH0mcTYpNtZNrcuZRUmTWFu2VYLn/Jh3eluhRSylLgr2dm+5sUp2b/VVU3JsQdIERrcyKmJXTu1LD2ouOwgTiZZAosVWNm3yTIDSO/r94xpOKmajMYjRuBFV2Ci3l1vY5KgTYpkLW6vcXd/cAWaXqz+aOWdn5lwvBMcmHAhE38eYYBFxkfr59J2kg+b1hM3rMWtemb7HPSwwHV5hBnzX415FXKS++z0s8HNIg77X/AXVbZUP1RZS6DW23NfYcj+bRm0Re3EE71kUR3O3Fc2OTYbvXWk0cG7vpMfk4U8Ng6PW1JEcNnWkIxfYz8yiad5vFlFpzVraBtUZUuN0XQfpuu5IwISuGQNKjywBrLiWJHFxU5B9lB4BbKMiPYwdwXQzQ0dBa+2Zk9dhccD8uVlcTaGh2uSadsCc+CUOoTKUEYiNRawPjJsqwE4syF6vfKibkfF2FzXbGNS6nModQ/bSJ+ylMQCmMQCW24CR4/ohCIbxkzN8brHMqPdCziLXo+ScURj7zCa4GVrbsFiY2gF6AWV6GFn6PqB0DIwz51rwXkKlP3c5FiGWazq562nvpQKhdB5tze7hREoyyZ2rcSt6PWXK3MUlC47ayjhpVQHrLAcqRt3FrvM9hpHoHVfX8hm5hVlc7VkcYvRcIugo3Wb+DQax5/HQGoqyL1cairIvl1OEmtb9HIP4ig6uITKFIbKuP4nB6FcZvKny3ktHAiPO4vJp0p5khkSfQBiz+Ji/CWGoWmdMLdDuu4jYUE0XIeDhOAgE5qSiytNBkJ5WJoX+VWhwl8ETMIMHxZOCDB4wARAdib43AQDZ7JqkdnlpJN3NStibu5ttim/m4uo98LeKOCKQd3M5lEu02RXIgVfFi6lM+ljyBDAourwba2bWRZUiFqVIxCJkt687tnjG4cLjoqshZiPET8XQqt2R6+ajdbyoG4blS8wKsIiYtjAFqdBZkjhZvKRP2sfk12b9zbKMZ5aNhrLBYh7WssHPs4msdGYexvo/B0PmOG7r0xIhbzdC3i5P5Cq0BxrGkscIdJKUAm5MV/OCWwbSVLC6TrCy/6PB/zkTpl2aAn2SpjAHTBTEvGaGGlzDUnEfF2sS8qL3o8D7GZpG2RqKz8gknb0fi/IpYFbQAOqcRcEv2yUO7ZLQ2yWKf94mUBQIlACTIQwHVyh71UfCxKlNycJ+Ml/XTfa7Kb5e2ChR54wICGk7EFJYpwCPpYcKA4/6C6yzkvobEWHQkOGjwH3pEIZ9WLjM8MDx3B6z4jyO5/aISXrEJD1ikj7h4O6FAeEyKK8EZWuIt3ToOQ3x6i3i0QaJwTwaSd/rHLIPfbAztytzQgNTaChOckwqL1xxYGrP2Zeg8c8ImpI+mPdAa7YWuaR5Bq18sXEahpwwI0F723ePhIXvG17DIs7ko+fAEkSVYxOWDmRlnhOUdWs1nvII3Wo8qSbrFMs6nWmNJpWIw0K9RB7d7aDfVVYP2lINwkVyHAb7Ghjsa2CgsIGBwrtSLoOFXNQXct2Vt1AigeHt0pe3dFjPuRehKN3So5czi+D7unA47UCkAv+6LgTOQSLT4F/TemIVuZ0iPHPqY47C5CWvszXIo+9bT0adQFsKLKY+kVyyh+CajZ44zh4izN3ZjtGJMFCDw/els1jtyF/b80OKtelTrFsKCqUIKSiroBl6oR00duCSIhx2AIE9i3p5NPQURpQ8lJYcWG4WLbcOXkpgrbEECxsJthdUOodeqwVn5xacngwBSNC+Aeo6DdR1GqjrNFDXaUCQlAlgfY9LtW8Mo/sybBZCn9STwoRkEWYEtaUEtaUEtaUEtaUEtaUEtaUEtaUEtaXY/5yOaktP6knVfzwIEA9QlgckywOQFQDHCgBjTVH8JEI6Z2ZXIZ2fE4MI+PJ7dgIbji9Lx001Dd1pQj5KQtI7MK32E4dImx1H2sb58MTdBpPmQQzcQk9zCqScCYRn5mIUkbmIFaMxHQT0OHwOcX6LcX6FcX6FcX6FcX6FcX6FcX6FcX6FcX6FcX6FcX6FHrbt4/wgbi3G+RXG+RXG+RXG+dVUKttr3vcsKunQQsa6vuxKNBsxio1YRG+xDDMw0+FrbzG7yQlyZjZoYZZEM2GxAgMVayQmMUY6+4gL3AwUuBkZwE6xlI1T6ZDVBrATDmAnHMBOOICdcAA7VVaHRZ+tfd0outv5e4C1dxZSLxDGVtHEEvKuIUTFK650ADoCnYQOCui5KFDV6SwLdjpLMrPGhMjZSFU9HRfczU9y/SBhWGDWdcJvS6mf1toNVoPFv+mVf0N6pQOD08TaM6X2U889U0riJWCOBKYoe/U5SSNg+XOPIUY0PiMYn6YZmhYMzd62tJNeplMJaMBzNGCUWPAcZ14kSsZQBVWWgNkS3kipw2K9j1DwqR83AvZK6pCH1KELIN9YZlXDjCNTNvZV/RXja5cFvCzimYT3pP6M3HMk+OTzt36l1Cd2QF7EisGY+g7o0Bsdm4QqLLVQWGqhsLGownsIiz2oK/aIeCZieca8r/IyA4upZNCmM2jTGbSoDNp02ZlqOdUOrCOLxXse2Tk7Gy99QA18a4uAiwSLjKq1hcdFhEV2YNtC4yKgRRXAoopgUUW0qFT50zyXdrTFS4y4bpb7xL7aJypUf0bEyII/kziIIPE0JUkLtjbiodIE9G1eEo9uKpRp1D2TaN3wSV81fEA6wGIjHWQxlwFOPCzB/80T4yIXR9D/ay/9D9pLtknL5HRt9wzJISiVLVQGNMGlQHAFFkkv3mQbR+wd39k7fjZ3CpKtofTASKMZI11qLFQ3WDmcsQo+7OQwT2F3dTwmX7HkY5YCjlFLpGZhJe79HAptqzFTxKSioZikL4vJxWQESL/ymH6lu9mbo/Srj2VjrPYRLQtKAx2+uiJ9g9WnBqtPD0ZQ4gYvQxNKSmIZk6CUDEZQSkYhKCXDD1QNwwmdhA6lcU3NUhDaAx2AjkAnoYvkb7QcJ6A10AZo+IYI35D3ODkmxfSAT8uR5DLfNoAREuGLI3xxhC9O8JUJvjLBVyb4ygRfWUQHC5F69CU3wrg3+yx4OGXu64E3SZhwYPcgc/tq9wBny9kk9AOQ0h30+F43lRpCm9hPFq9JkIykuumV57Uc91y1FZNryQfbSBLKv6L2zeVIWovLkd46u7oc7YzDMx4XARexLPbSpyvwtKjTLep0izrdolXh0KpwaFU4tCqcmRa1f5zzUISmJByUnOniGVU6Ch0V0BpouDfCvRHuTXBvDuv5lo5Vj9p2FJ6XfNu9L4ES593f9x3fcSrmYyEiB7izr5IjCGGqM4Wy5P1qMr+SsXjWyLQzHxyaDyQZWSwaDsGaoxjT1K6YYTVr8MzcyPBY0FKMSBJAhmkDNN6QDFTAiNnJg725w6LCDot4AtowaofdFgcSqiRI1XxuBQKm5GhuZcrbuHZ1ISaRRcTHBrws4iLBwilcEC40LgwuLC4cLvDbHH6Bi/1Cvtoh5jSSQ3onh7Kjowr4c1komXJzjpFNJVQoF4UWLhuJKxRS/NQML8/lVGI5RZBLtR12RVEU3WDwleMMBaEJaA20AdoC7YD2QAegI9DwXgvvtfAcC8+x8BwLz7HwHAfPcfD9Dr7fwfc7+H4H73XwXg/P8fAcD8/x8BwPz/H4HPh+D9/v4fsDfH+A9wZ479Rq7VPHPsmix+E+eFy6aBsImRoImbrO4pXUsdjbt/t0sYhdVeIzqut2k/9aa2RqPx7Km7Wbatay8FvumMVrUKOp89yxRec4oD/8mae8URim77UrIPiBjvjr7E7QBDN5nxpKRRsh6tUPSM5OKvq6E+lIUuV/wFtQs77M9EySzDg6RNnbAWpYIuz5jusJjmugDSSVGjgeoC7GbfxTJwB9z7OJJwap24x5o2t+yTzLHVpPEv5NnM4VMtfmCplaaVY5W+/s01/NebiN7tc4oJH+kz3UnzMgOf37r8L9NeL+GnF/jbi/RtxfI+6vpyOK9F+O4RvIyO/Fc8BM2GWJLC1lbITGMRbb0DhsQ+OwDY3DRjgOG+E4bISTSwdr/PSGRM4ATCk9fNOt9lAHFNV587eFmwpxkhhnrb9cNYopu0Y82TOj7RwkLyW49shuXtAQxzZlQRWLTck0o5C60Bk20C1DtYQbgpJwQyC5d2ovovS3gFSiJnASoQWj7WtAQuqy8t//OmK6ouRVFteEDzlugLZAO3iOg+Me6AB0BHpvxZ2BkR+muO5Cu8Xy2kRmWx/gjeh9S049iHFuZV0vaTrhEm+Ze5JDZbnOK92VAJGrkLeoYD2KrnjzoI/88lrW3Dvi7N6bZdxQ18eMXHLNIOLIJYd01iyV9NS0bMXdudCbZ8LSZwIl1lgj/cfHGmukNaGgocZHS41PgvjCTlhQOVhHU4opubUgqZiV7wv3ibQf578vSRslGsFooC3QoDUybzDdI5MrefGr5UF2mo+xyPVGsmHfi5YNe08edL6g7XvSzAMSK5JiVThQE4kjsE63MsXSY6AKCM0CQo5HOC79C7ayol0T4ZkRnhnhmRGeGeGZSZoilIYS9biG4waOz8A8b1bAvOPpsg6nyOotwKal5dUOa3vbD/TG1942RlCFftsYgat7Wi8Kp2WENYqiOh+C+0fUV02d33FCf/F9Y35KDDJS8kQQ0ShKshdDtCiGPs3NX7N5sI+D0NDayIbOJsFGXC08ooU0QlohR8Xt5u8qbr8gGHnYtOdWPDlT2/OoSzX1Ubvido15ZnDmtglVBaMW6XVLSKp3AM2XVjh3zCnfGtu+6dbZtojG5kN1QNgs/DAVUnZq0cDc91K06GOumS4zE+KhRVPcq2CLeBF6ZukwxOyL1YN0i7j6KBFXD3MYAgypW3KdYldVtEn+aPQlQdWjb9zkb5gDdleA/cUNv7aTCsS2igoXJ8YRB25LelyWcnmRBYLbc7qWe3i0ZF3MUSKepEttOMHr0SSBWX4AQRy5jJ52VDpk5NiD87yYCxFk9U6ilAQ1Hkl1S6RgszJncHFdvmQOaWIkzcQIVW+LVmWKu2r4gNjRMFugdA5SR4FFZ2vYKZcmc9SJ7oA0QjsAbBwANjOJ4uqwa6oTZTI9Da4NJYoCidL5YMO8ETm4Fy7qqnBBgD7EHraeMbAXsCOmYXK2bvnYdpd03TOPACc7B+Y96M3JDHcXnHrGgXnLtqh85IX9b3S8uBGL6na/7zTqrq30YZz8apQpgpsf0c2nrQIj1W83XfFB1SktJiJcFvNlmvORSq1KC/cShnv3HW17K7DYeiVeHIut5/WhfVgrlsicOMEaLls17+5sm25gKQ4VW9w2rkRrOPV9CT0nGdNXZO4YMA+XUkeoouS0FcYzxHxmGhoBuIwXwMp4AazQgS39LGLYmY8TZxYaKq9YlRNHdWZgfoLB5+m9rKm6nA3Iu+j4DfMo8r+qHGwCOtRjQY4BI27yLZDNdIAxD6ueF+LdCfBurYqd9PYH8yLzadzZVp8Id/W0q3VDaF92lWIn2GnXxs+pDT9McwzYrUmCyhQaN/tTUaa55siNol6/COcblDLKaGR+QDQyfSS25lOmGDxV68Ak4dKLt5i3CXrS1KIZD0UzHrgjdoYOOk+iimLmgKOpJy1JkyB5sx9zgvMM8G5j5URpw890FNoh3XVIhxMZBGsJpZtGBzNTysmvdmRLRYHjluAMtQk3G6gr/vPOx3Mwa7obKaZ5GLhYN8HXaE6gQq8oO4ZcY6HzvfFIGPQargVFqmcTwLMJR4KB/y4F0SJ1FC0iYGICJtYgALQ01o0wjC1aGSwSLQxdA6Y/MAQP3IoZLnDk8HuYrHrg/c99/Cn//OEgaguc5v9V+QMlJLoQ4VwKagZ1AAHezpdb0WVnumllCyrYgtR0kCGB8Qp8lFQd9Ee9boqgm+Ks4f6qTdXAK4Xg1S7Mt7ZjK/bkEHtyPA9Z4zxkPZiHvNMFR9HAbm77h1qC04jME3HCUCa9S/mk45H0yBGuoASh1T264PYcojABf8XeC7TgUf2bgP9/JAFfS0/sKnJiZw7PRU4nTlwVh9KDzH0A58+wfS/dHH8P6B/0rjizbTGMKLE+hbG+XXqEQ8hnHN5bF6IEbm6ZwlHd3ANRuam6ygt7I2Wzk44WUzYVpmwqTNlUmLKpMGVTYcqmeiJls8/MBJFa0FGzDwx0ArLLhlq0LVsH47GjaRqX2VbAbbKTXbisQJp3sxhpEtHnenDNjqHu527VywwyqsFHG40LgwsLi5thfueFDH0dZRvY1VIClJDUJwowKW/z8jYPSQXyNi9v8/I2L28LpSKmjUKn5ZyoTYD/w+RH4VntsJabsJZb3ajlVrO6S236wu6yEGj3/1i1TS8bXoviOc3h6GCuwtHnidpWQyMYI4jnrJWor6M7CeIhxDN4cRRGV6INXa8aPRM8t9KKaDoKA+ROPBBCr6cS7YTLg7lIutYEUFVK+W/HOgLCOgLCOoK35IKFx0XARcQFVDK8ZRgsCBf4BR6/wOMXePwCj1/g8Qs8foHHLwhKZvV2kq39HIQ53nNIg/qWxqcy732ZrmKuLjoxd6f5jUOX7n+yOjynUrGT5yFLPGACqci4syrucOw42k0EeNjgykmDK2hqRcP+Vt5d6m/FsEeSdn+FBhg+2m2wmKXVw5ZVmtlCXBZCUBZioBsVwWBAYlheaAe0BzoAHYFOrV9Jk2jD8cOuJX974LP3QtLCvcMz0PWyWEP1TMB7WIRUQyl/gBulS5nazbKXIQkTMBP1PhUsfr2d33FZnyl/j+57+w1q/LRYe03ymbyAMx+X9UXAyW7V+CX4tjwPon6bUb0lCgvdQ3CwwL/H4N9jfB/CGcVMt9XdJsEf94/uKmRlDlJQILulRWulIYHfQwL/sUz/POAU3HXTdpjjv8GfxgkEIJu7BIKARuk0MeDT+RMHwlwXC9WeGaJYfD1uq4ASuUpHz9JxBjJxKpHBVCKzk5uQpbak3qf/8i6nq/xvjSrAPmR0jnO9/oWC91CwA/zy12HhluBDx/0bhlPdq1cZWyeV4VCKzwyqvpkCtz/R2P5En49SHJpdBq6adkboTKScWcfF1L50MA+21X5Uo0b3Rs0I/ymDBLMZ79swdxtjHtdHqp7RecFnDDfHqvdkpK7ew/xW7snuc73HargnT0eq91gD9+RZSfUe7wHLyNvjPDV6SXaEa/kJMh90UwVmFypJ7UICUZQOtlJVymxCl3gkRQz3a8mCbhmh9jYHzBXPIgByTe84Rp0dIxi8zWsZKEeAChTbFgEXsSwqNCEPqLzhT3gjQhM4hU52ZpSXsGz95OqJ/PO9T+jc4Bp6yFlcoIudGeh9C/BP7S5dTpjcXFput/hgi159Zix+lkUPP/MVP8vip7CNmO8Y5jkUPFlvEh0kuWGCN24zGuI0o8EuZTRg/SS9k3l00Y85mUevMhpITh6ennspei4F0PeYLvpxE6AIDYe6odnY1Bb4rWfeZ1l04+gLKzoRhKes6JH7qEU/MpOSMJzlWAc45YTuesAzAZ1yje66xjOmVXgGg8bpjHnLJN7WF1IyCKt37G4ytaQW3mBjdjcdOJjuHhOzP+g4VwNm4yiMC9j/xhKb7RVgupeZfti/5RuK0XJbcCoJtKWnqResyQvU5AVp4o7g7oSbqfoJ9GnLsFmbMKEt0K5rIChBkE+5/w7m95mGNhL8bzJCoSRQHEmQy9YYeedYtnlkGueRjQ1ZQkNWoSFr0JDVaMgSGrIKDVmDhqxGQ5bQkFVoyBo0ZHXtfuoobRmU86Qi5knFQY9l6IqyYuDGef4gpKQaSEldqPsoDqV//wP/48rkq0Iv1HrY1sqRsVqiOkA06cLUAY7fsHu9+H35p6h+38gevt8Q86hDylEmAyeJbxiRZnjNmhs4ZThuuxwuaE4jVfo9W3X5KDX5jzD5jzozUUE4+smc8kgXVdY+a5aL5Y0Uy2MLbRzAcVAlUsuAauWTgsqnw+w6y38MVRbIiW0eAMQBO5RrYFD4HdYw0lik1rzSzlX8or75qnd4d/dD4tw2rqMvxXUI4zqEcR3CuA5hXIcwrkMY16H9jN0n2jXW8b3juI5+PK7zUShH/12hHPV/KZRjIJRTBvHV8A1B+IYgfEMQvvkYeYt9tzYFBXsLVdkTu0RLuUNtnOQu2SUglAkFcQJB3OFxuTLYlJT2XBlsS677BSwbezBZQSJqEoAGm4aHWXG50eOCm7Fsg1i2uYtlO/GpPrViOrdhHuL3EBXoZb9P/ZnsaQ20gq4pghsV0TWMHOcPbeQ9ZAkZTPKh/+EknyY5fICuJS3jZyteOCQ4cYHscqlIzNmOukZDfEMEqMzVakOs1GIXlK7QEO3GAHQbS3eAZTqpUWcsM3e5qFXH8b5xGcC4DBPjEmRakXU3jMtJcifEy5PqBhRshxXYwbCCT7M4+y7otDqx9I+hIj5UgUQXgU97pcVTi8oTRuWPi0JQotX5xI4XOR/LLXR1avOJLU4hntd1qltFnv+oVO2djLI/VOB3mIHlUUattDRYEjoQQCn4PdNnwKsS4JUq8KoEeOUgf+3w7GX6+r3YJXWhkIqa/GIC5FWDxRZApPK6ewMiBoOPioOP0k8gqIklsqnfGiUeDgo2BLfZep5LfRcJ2tu+Fq61t13p3wPZzwqzn6s7BWcinLnD6x+y3bQqIrouFyBAAoWYDFGOxlZekxZKTrlpgYGmBWbbtMAKplgbFSRoVJBOYyg+e2nckKDQM7Z+LuYZkjwqJHlUTNJ1Oybput1r/i/Crb8NPXWJCRv/pf1ypQis+SIoAbrEBO/BKOiBLPg3Ev5TighZaOqgrjWOo20XyM4qOGr98KC9cKtDxBely6QovsuNbUkUs6qGfROJDWg+aShBWOlw2D/frreaiHkgeDM8mni72nTi13ObfitAOsvOW8qbWHQFsObBm4n1v1zCObPk75RwFu2eB7UVtDXEbArqrNpCdNQaWdTOQxmHDVEV7Nbky3K/qgLKtjMWz7hyxvOCH60zXAuPjvA5v2RFeGhWfzXXfVjMrY6KuR8Ll4Uftlrq9B3en61T+r9tMgZ5KH9Lm4zVfOgNnozFZlD2j51JK22AttvGuV1aGw4yqe26hYb3JnhvgvcmvQlGVhrem9w2ls/0Xv47bp0L4l/hgnChcWH6DrufNf/4FShprjIITUh3F0oyT2iWVV9zFRaatqcsyqiF/rL6kABfiESgPozKCXcR7uk1xvX+lve1x1KV650OmDH+9N5p81mTHE3NqEOZrwVaMgbQlr7FTaw5KlSb0nDCisZdPo8O6QKQuDZF0gVefFYDsRA2okuBnguN8NbNrK5D5GJ31pH9lZ7Z8ovbnIdkpMc7TM64IQfn6uzuCWvUXLmEuXKJRwVJwdd1Dko/ZNmW15WDfM82JGwTHDQp3SoE+lUYYtG5YBUYm6fRMAmLmIRFHTLLmrnfYsorGCfjK4iQzzhe5DP3oYLS6K+ko1Fp9FcWPXtZ2CwHvEZlXqgbMR7wmi+XWfRO0m3G+7SV+ahRn8ZcvX1v/KR+elVRFYhW7ahWI07QRhQI9oFxCZsAe2QXO+Ud1RLrjvjowRzJtS0+29WfONNj++VJ+d0GKRAOUri3jWKprLXmGEZP9JOD6BzKeitRgzvK99tIwzbCZhwlRcEUd7CSTkgvZBAyCpmELPHlSkehD8PD9HckMXZWzEHBzEJ648GOngC/Xw363rLud9wxErLfM+jXYN8x2LuDgJIjmmG7ZtlsSZoZTrVglKnCGuR2k+bS7iSH/GiWCDa07p8Rwr410atFmVI9prB6TB1Vjy0J7vOECI0JEfrU2F/qeh36yejSem5q+R/ENy6FXw31AK1CgJammCxNMVlCTNYgJgsaiv4hMOxjqGoyXbC4cxuA/5rCI1B4tXRBG+FEzsTQI7e7jpt6e91Cb5xu6QOQe2SyaDmCo3Cw1EPl2fRpeTZto6BLGfyLqBX+SIkbspnWDPwlVQwMNXoqbOnXDMIubIKBjptm39c89fWIpowHP0gUv90YP+U+biOuy/otFgqUXk1S0rqRy177Ysm0sN28hc7vOBsgAv4xSTrdRgu10JHG+JDb4kMBO4Tk0dNt4T6pU0juB+W0kS0lw8y1EzIImRppSEgjpNxm5DYjt1m5zcptVm6zcpuV25zc5uQ2J7c5uc3JbV5u83Kbl9u83ObltiC3BbktyG1BbgtyW5TbotwW5bYot0W5LcltSW5LcluS25LcRoqANkA7oAPQcC/BvQT3EtxLcC/BvRru1XAvbBmCPUOwaQh2DcG2Idg3BBvnEQxx0G0Rk/0Jk/0PshUebeywKBqf9VTn2ZDPJi4nMUpuCU0H9weGKj27m7I4gGv8Dwu10o+JM3j1W6g10gspKb46CpkaaZSQJKQW0ghphXRCeiHlbUbeZuRtVt5m5W1W3mblbVbeZuVtVt5m5W1W3mblbU7e5uRtTt7m5G1O3ubkbU7e5uRtTt7m5G1e3ublbV7e5uVtXt7m5W1e3rZPzWYxXskgbwvytiBvC/K2IG8L8rYgbwvytiBvC/K2KG+L8rYob4vytihvi/K2KG+L8rYob4vytiRvS/K2JG9L8rYkb0vytiRvS/K2JG9L8ra3pSA0Aa2BNkBboB3QHugAdAQa3kvwXoL3EryX4L0E7yV4L8F7Cd5L8F6C92p4r4b3anivhvdqeK+G92p4L8gZAkFDIGkIRA2BrCEQNgTShkDcEMgbAoFDIHEIRE6nW0H+EAigI52rWwY/ixPLdHNFnIKLQNDsGv7JCfjTQNoQiBsCeUMgcAgkDoHIIZA5BEKHQOoQiB0CuUMgeAgkD4HoIZA9BMKHQPoQiB8C+TO3D4z8iiCZCEQTgWwiEE4bqBA+roMNQXBtIET4bJBjBIKMQJJtrBf4VhBsBJKN/n9777Zzu5Kk172KHoDdIDOZB667tnWwBcluSIJ0KZRVJfeGytVCqyVYgh/eMUYk5yLnKunegAvo3fxXkpwkMzMOX3wR8RBtx0O2vYGNh6Q7HqLueMi64yHsjoe0Ox7i7njIu+Mh8I6HxDseIu94yLzykHnlIfPKQ+aVh8wrD5lXHjKvPGTen0FR74GH5fEQgOUhAMtDAH7ZfI8nekjD8pCG5SENy0Maloc0LA9pWB7SsDykYXlIw/KQhl825OMhHqKxPERjeYjG8jTBXvbn0yB7yMnykJPlISfLQ06Wh5wsDzlZHnKyPORkecjJ8pCT5SEb/0wDlnvg8RAPW608jLXysNa+bOnHE/0PU6mfZ73Sql81G36e9XiLh81XHrK4PKy+8hDF5SGKy0MUl4coLg9R/GXoPx7if5hl/Tzrv5Nx3X5qlGJh/Pv4gX/18jiuj+Nnie/z8e+Pl3jI9fKQ6+Uh18tDrpeHXC8PuV4ecr08DMvykN/lIb/LQ36Xh/wuD5FdHlK6PARzeQjm8hDM5SGYy0MWl4csLg9ZXObT9Xn87kP8lof4LQ/xWx7itzzEb3mI3/IQv18u2viL+M/8iwztiXfG39dfSLtYf8d1fxH/OZ5RCQPa63B+Dmv/HJ7n57D9vKz/vKz/vGz8vGz+vOx6xED2/XH888Lj+Hml4O19XB/X1usBpD5AVcHrhfnam+7zRz8ff4zy+GPuzz/m44/rcQO31eeP43GDUvbnH48bJDJ//3E+b9CeN+jPG/TnDcbzBvN5g+txgzfUHcuAqa385+Q/jf90/jP4z+Q/1/9XJ37+/xP/3534gz19HPyHJXCwBA6WwMESOFgCB0vgYAkc11/8P//gX/yAnFJR+dP0nIrYulo9tjV0hsiJv0+G4rNcbWfoH/7VP/+3fP3wtciy2M/4fOHb4MXs9SrPM6q2726BvTgj/ruPs7/vAbp50OQ9/DIwp3Db2vOM+NHGnUF+mwlv+1neZzSuizPiaZr3izNez9HEbne8zHBtwkC6rtHWW57X4QdoHIa2vOJH7iGIsvzN0M632M/nbfcJHBvfyc8A3By+7vU447IU0gEP6prH/mfGiT6E1xOHExLlcfbr9QugdXECcPr6ta8zwiPlusbzx9tX/mW+Xj4cqfk54/Ip6pyvSfATxxnxeYqx/Tjj9YmLlcfCBIg3LWy7cMb78XVGYzoJHcQZnD3661f2Qdyl1rDoLko2xXxfx/tjsdJw4eNcJrpc8/y6w+VvcMbJpIeRUV9nWJM6bKzjc3a4ya8zjNCFDRuLgJXAC491ggVx+/ANQsDEzHMY5ujjBkO+QLh5/cfY+SjhO349JAvhrJ0fwPeK1fqa806Q46xhyk3Msu/xmC9MvnrBTDrokhyT0V8/Ef/KfXfqxIXb1zk+9tcZVIqJ7ccXiNXDd+/XeM2Xnf/yHgXk95d7hIntc0y/F8GMeu31vXlZe+E/DOaq+7X7a3vXytYvctVimwzPeL1t3Ylc5T0q9tcv9wjji391G1YCq3H8XuEV2/Q+Y62ArxU+ET75jHVM7zT4Hv/r//av/u3/9Nu///dSKi73V6yM+FZuiOP8nPLHP/7XH8oopiy8Eo+5UTgDdZ31T377P/74h7/ntFZBC3aL97WTb7CX11tdJ9vlGOFLXZ3dEr5/ea0SPvtBdvw1iXR9jcdjDFcC/s4O3eb7jEnZthCs4d2FdGeuc9f/k7/6l//WcGSlTSt72mPXQb9e66wantobQrwqF/Z+fp/R3a2pSXjP2cafOeMqzi/yg8/ydQZSa7/OzxmH88uTZjvTGuqpVT7mXkOixhd9/sZ1hfjqZ4j/mN9Qif16y1A0XBssrf0KG6KHF/EeP6E8s1VDRcXdQ++9N3S8ecPkjuvDq4/x/r4+9ldohr60VIu99p6pWHsttV+Pu8T4+/dH7KK2K9Tm+HW8sC67ME5s6J03fY6HjLl+DAOA+x6TPcJpeD9eGD5DqVqIRsf4e5sjLIdBxjAS9+/ru8o19HpdGyT0+PP6fk2lBL9cy5V6/jmuzjjDDIk7I9JiRfbUr6fi6QyF9qPv7JewAo7PUHWFxnTt/kAdz4WX6zXejYJ62C6xE+Z7HMl34s+NkkLwuWTiQ3B93PXHqWURym++xlHc+8Qvruro96KNreSePT7XX6+tE/JGqQa8pfALJfPcnOUcbdkMMT38VJvjNY6O3RuZAifiO8Zf90+TAtiVSu3X9ZrTMHGGu8hEjTRRnnMSGxpZDWAf4z7oS5m3sSsNYuE0GmmGKn9t+3apQxnvfujwod9KFqGecm3HbA6dV3JiedIfY/h1UZ+zhIz9a0dmaOPBkrhC4nHU84hTQpXGBwsBB6s8VmEcVY7iinx1BF6PbxJ/esrpyXnnCfAnPzE0yeDo4OQ9T55AhN4lTw7Bmo8xcVbyCKgxLwMrzMs8L47yskE5lRFfi4GTy8b6tzHWCw5sikGt+YFGGHy5gW4ebefk8AHCXD7Wef1oeVlv88p/C8FW3Z5s98LRyUBZt/Io/IF1Rd+vdYOwwvOUzqqL8yan8G/xCuvk+MRxnr97rMtwpe6Bmg8ZR+XxaGFu8mfs31gRY528LmscjZzGOK95tC5j+bkGWo8JHSP+09gFfrAGZduvkbf/fL+G+zOQ4I0fYoCjwRd3FL7jef8G7xYz1vPXnPg8OkOxNli1eRTCPo7qfj9acZVcJDX1vMxC+5MtFaPo1XnPDF6FNpxJCXPw0kBdISdJVIiNOUOPr/Oue6Gjf+Lk2HcjvKHnEeImzM/YC6GT8mPHUcs6fnHTNTNxcvzGOWZ+8Ti6+Dee5bzu5ch3QVcOvIZ5FqaCdztnuS+b9/1yZYcNNfHA4rIzlzffJSn0P7/QJGbkngkz/Mgt6RNMltlkzjlaW7KNI3dP7Lc8+am39SMubDeCGphkx/ew7in2QHoOr2GsuLZ/ru4vCY5NgL6sGuvY0C8FceiTVqsEXef5y92LxeAqhnEoSG51vrR+EUutCujWtK/3t1NaNdzJXK972tGv6xFWXB/jQ3u/H6/f710DnoYAEzcjnLq3gkGEhhMxf1SAkbi+P38/zBU+GX0Bqh2i4/qngqnWiK4d0PJsaRW/FBTSOB4aJHrHB/lS+zGOdWnwbkdBhRfzer9L16YSQ9B3xAJ4/n7XJZiEZEa+33y+f7w515PcGfJegOHlv1TrQ51GUDTWw3J7qrj4Mpcmb7uvP8fbK0aFNUJFhQSfmC/NntQjoATAy8eCFBYgUPVxG97XiWkRQ8dYF+kfkToIMZvLyz2gK8Xe0Oft/bh/Bv+uXiWXajk/KpIvryWYXkid6wrfQ2sWow5rsoz7kqJtHvdSs47S7g0488/cLvuca2fym3Fuz98IO+r+8QHiwYLZ0bBjv2GSPTZBTFHR24hTXl71iSoX7DjPAoTS3sZUWEgX8dYz3AdTAJ6jJTTTjEvWaBgMz1H20Rzx5o6GK3QtZ+sf/90ffv9Dd3FPA3Omc/mZak7669/+23/7nS6EmyCcZT8hjL0jjJi3zVLL8rjiZYtSp851n3/5uz9Cirrqnv4pdgzO01kQiz9lzuVECiBct2+l1VsGb4mlyNFbUDT9r/jvpRyLD/K4ZzlFQlADRZSuSL/T48NsC/GBCCxGgFyUccLzoaqeS6Hvcl2eJJt+Xt6WkNqJ/PEGVVGFbHveAI2ELV2IMmhNUpJpVzCDT9Xpl+uEWvPc0HivG3gVrvupubnzHHF4alfzXJrokkCW6VrO5w3mxCoMiXJarnaXPnEe6XxhortlOPRU5vL5jZuzseOpNLRU3v8xfoqy4dq3hlyJ6XsKi9Y0ogGdw07hqcvLWm+n6MKOvdwPZ2Mfv/x+CScrfn8mhFV/+f0ysVZaS6DieOOXOp8AR5btwyf9ZZzVHeMwoL+eb40Tr1vXt738Oo51c/SEt46XCzsEdy/0wFQm7W9oDzWFC1bv8fJyUY+hMhMhvZSCrf3qzYXPQJLJdaTj81QmewONo0QX9kXIp5nGSFk2R+wN5M46wpqhTFKMhjESaytFWAxUTaTQ2Bjwc1+2e/zZ1wDiL47mOvIu1DyddDgFHllHDWMz9uC685UWXSxf4tVclneuhKknlwnnTdz/OFqPEWb1nveruHPItnXF3JeJGSc3LbUfJzwcDa0TFs4E6r1vugzLHMDUO32+k/QFTUes/ROSzkw3UsF6YZCNKp7hZetlqm8Ok4JleWEX/fzYFyZ1wXK+ME/jKGaG4GPBarwSGkmx1dYpSK04ZXlpB+jbIJxwTJ7+amsuUVBdGB6HPY/i+Sh3v871qtmFMNYzhVPS0x9r2IjhHVxPP6Gko3bjDR03KRx1LmuauOvDNbwXrvWr5FG/9O9k+uvVdc7LG6zL0BLxOgOth4c5PaXft/KmMeNxnk5ju6cJFAaZeeLZ6pjet+Lkw9+onBej8eXWUpgVp6ecKeM8ylOYq3VTFsXkCeZt3FfqiA4iDDEZcx3xkwOPq+qZ4SLEedyqrNlQKejGhQnc05+o+rMImLo82xgFyQ/PbnwWfPwJYCjyO2h2e99KS7Ov34XjwdG6DENrNEgmiMq8gUc+AYINz3advJflz4a2utKjrjCkBiGB+1Z1nUc4616+cYqpKwN/WyoKanXdqlRPXud9omDrz4J2PTHnxq3azO2+GruNdHda+Tr7cXQA4h052gCaf14Ro6gxEkqRZScge2wWj1rurGbeJEhDMx9zj20dEpr3+Dd/9a9+rEcUl3KbxdHxuUc8CXhkHJ2PX/WrOBrmwFxHAMTxJPHy8d94zuJc7fnsCiJ/v0J6bOVjlXg/kMR1LQoY0V5BCk/ChRWP6MT1XXc+ntf6zA1roIIV5O8eblyYSDsQLGSKAprSiEn6bnyV113iqfIbYEGdYI/KYY/u9x0cgb5iPpGzGf7i8dNibyqWAva/f0zpA4M1TQtPeBjAYV4KG3rKUisHPNB4Vm14T2GB/E38LzUXOrHf+orfOyxYaHH1ifthExw2d4EzVqzzClc3B67LoyU7/Ili9okD62iukx1F9n8e6t4yot+goS3kp7ghcmHmXl4ORTVzhEhMnl+upSvilO65J1PCubfcRCGOPWGYA0O+NZ2pg5UgXn+fK3aCw/uj46f4wnHU0/0WhTpQZw1nxRuIxeDi5kO0ZsAqtGDCm3HKejqw2Nr0BHMZ9udKHQxQkuWUgeqRZCu02ylNi9fL0QFTTwHlUa++fOHo8Iqn1QY4pKZtYNyxBV4247gYHcQbEPVfozgtDe9VgzH0Sn/hq/ENjDh0qAXtfLvWGDj9mnsaKUD7T1uZWO4AvvbRBrhLHo3plgWJg9q0L0T+6WxxcuJ5kMLHeGHa7VD8H8BnKOH4Qi9MGXXHfgxpGLL9fMEtLeMD8dKdhYrIfcYISHgf6LLeiEAc7wCHsGKvKC9AzP7iBwzg1g77YEC/7PuLgdAJCPnjnQKyfX+BILE6m9rQSDtadHeGl8e3In4AEQ3j89DjCNP1Puev/vSn3/7wwyU3HQ2l0/EPwpK93dR/9oe/+1vuY1khACGWhtjQVe77/NO//QOnVCmaFeQygwa1fkKL/+YPf/r9f1X0d8NwbUlALPH7Nv/LH/7d3//t33EjpHi8EeyxltBAuZ/nr/7PP/3hP5m/aEAKE/lMt/487h/767/5DXdXKDJ23EWBB9ya0PW3Q/y///G3//IHfiv8QkRf4iEh80/DOHfc9J/97k//7g/GVk8g1YOFi50X3vg64x/9Pit8x34HLOywgtgTt5f/2+9/96f/kC58g1V3gdjtLNR6zfF58z/9XU4WLL+e2BITF8vmvtO/+N0f/+PfSH/ETSJ6Gsudo+vzKH/6fSZvEkm0YdeOzXyV0d8OO3NIiCHs7dhE8bTPcXHQuguaio6NN+ap2QH7QJbvfqM+jYktZ0yZAa/SyjKYLV5W6A/Q6EFZxo1THSrILpBYWFI9l8JnqF1nBnirUbifQ3GrKyk5Ht5obfzd/DuHBj1m7t+ql5K7/Rz6LM2//sPf/+Hv/tPf/snFwBzGuRwiEGoyOHKi/+Q0NvRCnMLnI/rxmMZ/+Ie8Szsx6N0lrSnw+718/+nv/t1/oMAEINmJYTSpW33mrkeEnZJMYlpinpsA8Y3dqb8R7cRS6nxziELEiheCsJyT2PsJ5P1iGfldJL/EvFdxpmVbJqRk0Ac+1H4fwoMxfMUJ/RHs4iwErHYG/qG2P0KoJKT+ufZW/PdZsgKIwuSh6L5o1d4McJX7gvssWT/+2BCkOI1iiZoXIhy3Dc5ZGW5Bk+frnEIVJxckWgT0f+y3LXLtK1QGa6ek+3GEkPeRbjbQ44L7LEPNyPOfhzyH117fUYKjN3AdCPtHiKGYutJeUzdMCjADYJye2t5IvzUjKuSmYZT+fIMrIYx0MOOknjDc9b5eRsmEaNHl9nyP2xQFryvuT73B/R0MncTVChDmMUFbw7Yt7/Frma7HZM3Gk76AyTkwhgkpxfWABV/jl0teZDPsgapB9Rp34sF6eXI98Nf3uzr2o5XPY7xrfL7AF4kXgzTd0CPaqm9whpXp/cs+UZaxIt7j2KLcP8e/7h+PS7leqWsXRXVKf/MvLn+6TZ8PK7+/+RcXNk0xTp2nxqd6jU8SdOf8vN91vp+PWHtpsdgxz3+5fzw/ZZKBUOL5a/l1HMQFRI/rqZ93vSIRsTBBkZAYcT16+3pREXj/M13j8BdRce3Nw7pwV+MfGbeuTnuzwUJ+lhXEufS5vq+Hd1UVNbF8mkDCe/5RSeJ+sQiTMPH+fezrvJ40qrj+RVXYSRI62V9MMrDIeL9f00fGL7gAAklZeD8/NVWwQWLnhNhA/H7dn3E+4o6SPOebH3bVw1aKJ68aqyBE9Pv3QQUFWI4LTOF8U0liU104Aj4fkYrv6+dV+8qfukAJsKZf99/1qIHpL/Ko4tT3uBA10FE8atNrer8/LLEwx5hfCuPwqu/f5/sJ+F8QsuL93+MQYOKhqWQCI/eX94OstsahZOA0v8evtqyi2YEE+vmWX3hBoeouhUz8/jtSGOIAAAv0M26FtzHf+1sQre3I70kosO0v+RBOMPws0jlinLD/F/8qHKlwSE4RQ6yn8O9e8mvizTXtz8kuCpPhfX8Ud5NFMwegSnsz6Sa2aZP8eu279y/v9TXv37+oNPrLOCTnGL9YvxM79gWOlx39FOOKCty+9/UxCjcByy9ERbrQ5Ut+HuI/jAsPHecv8quRkZjyp5X61k+QSvqe+itmIezL1/wOmHc5PmC/f493er13OzCOXTN+/9KP2NINc2Qk3DO/9DdGV2d+Ok5xiIfX/uqYllW+4zBP8Es+hRFK5OlUv8f3O8vX+tLQHOiPgRatV/1aX9e+WGCTmqtx/+OX/VEH869+/h4/hON240b1zBjE1zj4y3ne4/XNbzzsS3wacwRqDyN//7oe/dPbfX18sF/Yvuv+WFi/3H/Q/+dMCijj5zv4oyG47g9E/a1fZanl/UsFd/q6v9zvvH/BsAaj/PV6a4VKDY/7vwmG41j2AWx/7Ie3E16QXwUUkPEiNPbruCT7HD/f8ldWepXkXPDHWArv8WsFUpIAHG7D/mYg91v/VQKJcf2bw9xQutYHqdhXqMLXONxIYD/4CEQzv64PNx3snBCiCQXfz6ejNCwneA7Zce/1V+dNjYJEImz+2n8npkUSOBtTFcPn218lIGDuQ0d/xPh7fwu0k50e0reBkc+v/QnTTY7NIAH1+/pRiSvY9Twk4f4kmO4pn/lHIVVNvZDB9Tl+Advn82kKjZ/pHWuc69MyP2MVfI9PTP98/0mKzWgfMG2NdxB8vv8EVhlJtVymBbEN1ldME7GiVj5DODvUDYgh6FJH338OFf/mkEhYeSFwIZCTq/gBfdE9E38OyuWetLRySAOr9PU7yFOcJi+TDBKHqSzu0B12D7E7ohM7lCSYXbfPjsgfWreD0ALO4HK34u+2/MRBBn0c4gP5CFbQGstVK/cF5MEb0IKY3lZNx9DPkiZPD3tyIA898HUbUubjcL1vnHWWJJWFwpYMObUN+lzeosDI1C0LiTzXHaXxPVzkCV6fLrI8MnmCIaJlZQINT4hR02LRk42z7kgaCYf3beANDFFlS6UO8NxQ6jfLMA6lyKNfLpKqpwWgJm0u4vAGQC4/SF7bCJjubb/nFwF4scpR8JMYqQ4PyUNVtX2IKNV6LyAi3ZcLYh+VOOl5x6h33ukiBsiKHAzdixV0AiatGqjrsN8YEWP6+WgqMBMgyKv9HJxLNjEofnF9FjOOTwx65Vl+5quk6cr75uBuOnTYyeUzKGRCzm8cYx6FEbC/B7FnGCQmcN3bbt22gUqsJ+/7cf7i8wDNYZQjf4D731b1leAdcZMdC/MgqPuyiy4T0y5cwqOsqML7HkREQz52t+MuzvvlW1ZpZvX8+Yvni58UZ/SZpHY9nfPzFZ7+dVmJGPhqc53x1y8PnzdMF906pc1cqHWM05qmN9yz8YatuHedEut931ARb2oHm3Gd0ZxClMhbP6Cfq8l8rWHmL0juCX15D9ZVuwRXv36lE6dF002NxHzf9xnjkIWomWaxzy9GYfwrdz5lvg/jQXGP8dY0KuGJKTlW3tMrgBGCCBlxyqcZUiDjHl/egki+Zf+m2xnq2FqYkyAfaRBG6cS1202l4x9KkssUWyu55h70wyUKrkPxGnQbnLtXTldRuwl39++sQXN2jvJ2IKYE0eZ2caOFCd0+AsO8K+7KGtaImvM9GBuYwWQitvrl3GD3EXYJ78XUqQ+tJdYfK8+4KTsh790+g5f3o1WfhKy4y/FTRcpoaoIeFp77eWX8TvdWKRrlzD1uq6Oe+VqXZK01+PCHNeXyDGl9cIjfHisTkBTYUBJ8sP36wuTMNnK6w+k17/C9GucuAXZPGkqme71X0jD3qjpxsdZEQc+v9WpGoxM8Oh83NMObGKXbBGOPFe1kfaObHTCdLYM2fdASH9JD2S/xTGVHskv5omelHzJ0oXVE3jlKzSSa3ZzDlozs/Y2i9V1ilnEDmemQwPoXo3p4j85uH+efoamNJKd5xn7If30/abeo4eHu7Jr8xzs0Gr8iV01SZZ/y9r7fpUtidPabq6TuX/JMJm38CPdQxpavzMYEgpObHkYC229/e31dh2g/hJXlp4cZUL/8ZrmKl99Dhlt9I8P9MmuLgjhxPLzHO0tzqCl3v72sGM9+nYHJfl1aWALZ+9fLDplUu7115545dP3PiMQd7AvT7Pr1VVYM4ySoEe5y5iO9QRSNjt2POS0fHr8yv2CmDOKpzOQvj+P9K/JIDVuGqSZlc3xBmSajH8YrzRfC5HmDMdq4x9SlVLYgxd73OM3tRKZeWrUkyH4BvkO3GpFa837jfcYwGZIMhTijZVLjW64a7t2N0u8qjvjfG3ZvGclVuObyGO+lfk3ZFrATSuau71/QYNg9LqumyJUEe57jC3xO7goaoI4rI0/v54g1cdFeK24B6XyO9x1M4BJD30HCrrc4hp10MJ4Yycn4l/baL+4/fQDv/xaBxI8vSIcksIad/E7uTPcjjLgpfHiQtf11/YRF2ZNEc5By8xZ+MFLDqr6Unx2Cefla22HNwwoEyfx1vAOfZxXhTqpOTPpbMGKYXWqSgS9yfaV/huMPbdLrr8v3ux202cp+E8avQwDl1OI9BDNsaxQvpiRaPtf0eF/+Fzn2d7oWlIDk0kjoIdIykj52rfzPctxJbiP9WsECcEN82SF2Q9BccVZM9SJLAujlvoyTsRjC52cgk8ikavlrgkv3DT6EvSTddaAF8OfCwp/euen8Efju6VKdZMPwVOBgmVj/gdAOcFKkvVr9thcWIeL65AqFDXZfZRA2r5puop9DesUAk8BXXeTgvqGyDqAw8+Lx6e74pd0NTGM/Bb1OA8WJf9VMyYeAdcr04BcBFVZidJ+3m33a4I38rbDzT7GvDHp3weD7EBgvLyA3Bbu6eAGHejOAIUAYnnB4m/UOrWROqpnoUxf9fnOJC66gm7V+O8o+i5SIDmLaBYw5QjaQxW7W+rpNDJBPqLnfYU5eP0EH0guP5donrFr7SoSZWDqmSQyIvKRT5xXjA2hM3DFzGoxmhGN+7xbBqd0wCizdXQuRBNE+lpMJeS8WOVU8jrwBAMHHYa3wSHcZmsiM3m8HngoZhAZC1EGPG+l9X0mGYxh++P5yp413HfJbPyBBDlVIeYVJJJTxuAqe13LQgSHaKxvf0FisrVMvETJfrLOvOCWVqsAhiQPMbxwyxqmbNqrBXHDwMd6CuDve6+f6d6GVThUtymVg2tLotH3SX/7Nb3/8o0wnFCsaM01rzVaChneVhD/+9n/7LhMptu9JTixXZqbfxKr/8Nt/hMh0KFLLoQ6FMhvHH7LOP/r97/29kganeaJcwVrv58/Pfe6Z/QkmDziiYeOv/Of/9Du5JKL7+MltQVCE/+9n+ee/+7v/8punXd0NfxklHHpK13k/zb/+7e//1nvhyVx+gYmrFduor1P+59/96fe//dAvPbJKS12qh8yZmwPzr/7291KMOmZpt7Rfh0TRy53RgARflLe0VMzoPUzJ+iBXmS384TXJfJLmc6Y31WWPn/1zxm//l+cMdkY7MtJDoerjw6v5R7/7uz/6ve2sscsIYP9SseZ+xb+Jc3IVXLgqZzdkLRMHNtDa/ya4HFaUGX51TKO1349D72PM8RHq6/zyiZnW9FgScdFxkjnwIePUpZRbkvtI7I/D8R6nXs8aP7CAvseF3U75bTvuJMD7Y9wHL1NK/WE2f3uMGgv25qehsVGeo5VIp4FC9dFKofv8cpYiqoCwIYuR47UcrzN2M6v2Pam21vf46Zv+vIdClVtY6uNe9//chTqoIVVsmDgqivYnW+sf/zG33y5VRj7C3kwqcBt/5JF7pSLlE9sI6+BO6v2kmgFOqvFXBodgJxA+huqeLN48DNFCBs+pfvfCTxwqCyntWSFqRatCsNyr7h/+7o8pCLpUfaUfsUSKTbzNTMtYnEgW2NOjfMy4mnCFmGuRJWDxgPEany78CgAcL+wcldcZGmjqtIviLvMnGbiazVmF/ggiTOHWn1HgmrZDiI108qo52PteHt9bmjJpWcafsE32O96QAfIjRQIB6gfBpy4C0JF0dQgeugyv5XI5GTlOQvLXOJ6DBWrSEknn7jV+yrksmif1+B4fLCKrMtiL9UrenMzFmI0Gtkk67I/2ycRqfCH5fb1I7/uQILmiYz104Fj22POHIGbHaoMHN7Q+2lsmEOcXzh4o79ZfzmMx2YCCO4U907IcwR0l6oABXePVjHs46iOkBBzIken57HNGB1zisHEA9fQIOtyHPhxoSIb+THcAn7nMAhGeGeswvlU8jnBHsg4O3W94kU163iTs3SyMOpMBMNvrtt0Mp/Nxlb/Q6so3nNPDKx8hD183kBexl/wtkqKwnu6nbYv4YV4VnkoWpvHwtNzNKw2GDGRzf8PbPfdMiCorT3MkQojgxNTfYZ1mJsF1wbwnfSZtBnOmktB0nu1Oz9tdtAUAnQCaeKX+S8liUE3D7cgUy+E5ZtyeP681jz7ZaWUYd8nj1m66ZLMmSYapm/ZL1s3q55HlY7CGu5BDSiii7oIEnxuo+Ie84DU48iJrEABlduFpPoa0RoAnyI/8OLbQnunlRbO8P57MlNLydWKXsmoKL8eZGoxxUbMqV+JfpoWU+1se4ajtK9k3DD6LPq1jQbOKHO5mQsfxl5TR7K3mOmkD1TTaJWCHhZRqZSgBD41UsyxfsGpmDTfQ/fBeDr/aHWGjmgBE5aElCI17fAJGh/zTTBc5/G7vUlWX07lnuvueWGb/Su/u++cMpfwvZ5AZxRnCKC3vsb8L1GUOfbmr9e3Hu8Lded0nUK3vPiNXcTkSUcysNfDJT+rP8UWnkYReDZQomY9vyM+lqh237PEwJZ8BpYuM1gteJiAYJcb0Y0jQvYZEtwX61FfcejqON0s46IeBKw6pEiD9E+ANR+ULC1P7mI5U1RT1RbBoWdPrMnHE7Oj9hXOdTZo8Oa6sdFK33qMXWTuMwqN458LkKKzuc2SKY32NwowkPShHr1fWiSLopMSU5EKk13sUu5YG01Dvzn59jcYVmPc5evX5feeGqesoWu2Vk0JqkYmm1kh+0y1zFGK0lQbjmfurGhdcwWoZr/7LMxuFOy2OYw7geBGJwqiVXDXCgjN94kWjMYm2dhnecPjfJK2BZjwBhyYYSMj063VnJo8cMFKGfvldwleOziJ98DXaQbXNwxvF4mfz/a12vGZThklLaq8iKUZPrJw2YVB8XTtMdLD40SWt70VbG+ROtSoXYsr/a7/87pTtgrp7V/eCQRKjp29ExsQL8Zw7cgwF6FNRtemXtWGyJjbxV/JIjuIq5ej7d8P0uTCZSu6U/i6UKEW+g9HXM/RULJVXQRXESkflm8T4VSSP6V6jsF2/nxmF1TEBzqqB9ibYQUa4xNqGovFN7xRo31Vzkj/24x1iN2a+G2Eb82ce0te4QYFhjkSfb/qfUSLpddOw1Hn9mfGMjjk+Xjh8EYMFZSe/3zIPbxqBARGK8K2aPbGtj/f1ddVOLWO/i1+8Kr2tH02Q07SLr3Siu6bqVe6aIs9xo51W0cvxdy22ktU7qM1QRgaqXlWUihVEC7pYDjqhrnehHmu5TZKobVkc4+9CPxnZRH7CDqQU8P6q3ZDRWIidWjT1TeVQdBv3hJh+ZZXhV6GejMQiX7Q7vkKkVXOoEh+o01ST9oqBZMGIWPFUFLGQ03dpmtlXUt0p1BBCbP913JzemihyGb+Oo6NOg4L1HVytAkcnhn012EgR4ff7icIie61oFev5pYWGlU/RQFmDsr4jWlkkscKR61ZMqe18512aNAg3KosofhV6ykqK5+L4ygN6STp1HwSAyzxtLatX7RSJr0VXoGTI4RV+zrTcrFF5OlX7iz6f9z+odtSOK9OMXrpyGDgkcGHeu1vxdb37H/eh2ROFMi+vTNpM1MOBEeqP8a9ah5pQ9a51+H29xNhdybqnqHnRJ7s4+CFRMA2Z+q5/aUiSIsLh3Z8zObSv+pg6IHIgFXJf5W17VuctVp299ix6+cv1FfrlqH7fN70z3YiKtTLMXmMpvLSv5ZGsZmeHwa9CXcP1d4KoT4G6WGnv8qLMXwWdnnJ0KfX50nZiWESfZhYqe1OUpvKlKoV3vZGvSmwTYPwI1dY+OFAr7ye0zC7fYUr0+iJiDJOyILasMB6L+f0GCQNeazwk8PMNpx2wDyvXtVU955XQKU65X2BuyaJ+F0rO61FLa/wrSrvGibZMS8V9rbAp9XqnmHCM77+s0Om22yFzTqsD7cfLgpqE1y7tOh4/vlP9fvrQDj2L8X1HT3eL+Ok9UUDoBwjFa5zXvgTeYYTE4Vf5cdbUZUtLiv5QxWX/Kk8+CPMMy33DlX2Teajb6o8uFsy1v6PkliPPhVVILrm+XC6r184rAXt8lq/rDwE7k6uqybxfZcutzU4kf+1MZ7e/6fkC1FZpzVpj3xqcO99FrqkGbn3oNwU/X8A24rEahmecv3wnZK/Gyszkya80AL310e7Srd+afD1HNex3XIqFd1HD+4x0TbPw8/Umo3P5quvHGdbw27+e9DTK6luIX33tV1w9i4W3/YYtUD/v0uJqaomNp5lBoWbf864rfdasOOwZX79SZ0ZsshR6Wh5vxkkViymZxa5s+/6mVWZdFg7Pe5Rev34lq/fu/orz/GWfZU5DlmSvWRx+vhOwSibhtqwoqbnY29eTJtXJmom7Bf3PN7GxSsE8WhZqXySvd6Htfp435nRmtsp8z23tV4IabVVWJBzz/S5llezlHhYIeK9ki5RZxHd9MKr4vuAAs8ObKZ/UKQpXor9JPlgyWoIXweY+3qXIEuRte8Lw45dq3icisJsN2Ykgop+/xtHkRtwdP9rX9WYzaKmB0n2XyzasUvbjhlUJUP6STVGlozToct/ZSo6fUn4b9sA535v0pPBLs9/FOVdR2ncte/1D6dRmk70dxFigWIpqS6uX/plxYAfiNhWn67uaeLXFbpIicc2+q5VXC4ZI/D9RCNh/r+e3mskERIrnFzX+qsVPirLEuRPmDiWqvrJhqFslARgg9XzXxafsZKa4WgPTxJxX3XySDetoVU32DWJcgwJr08rRZAK9y2LnKGBRjr5VoXx80zivRIxeouIi86lRLu3SFH6DCdad13y/sPG/R0FVG7D4RdXS9i5VfiFbGqxJQUXKBr/fl0hH69mY4ssxj91HgeLk3lnlJHeLfge591nghxoB804HOK3xS4DzBH4Mw5z3/M/rf38T/7eWySnBUtuUOK12wS+nETAvp6sNAKm8jUfznUxLMaYx3tCeXL3RUopYeea91SysP0wc3s+SRY2/GHR9cdsy8xsj6123kcxscp7bzMTuOwBl/S1rTHfZR9ddZIgoToFA1WDSlkT9HIAhTTmfZnnALDbswFkyvNkPa4vdmRVJ7eERndzSroUE68YUYNb7FNI/qT7Y9wzzxOhdtayRdFBAOTslJrysm2oC0K6E4bL1k+SZFCg3TYrRvB+yY1w60JHtDnxykwAjYazsLfHVaoSVyl7tQzVp/HYeQmwE9EUKmvOK9qxAH5mxhGz8sMCx3NshC834ajv6zyQY2Ry24ttNn2jZmCG5KofUrTpvsuXPK2EEjFX6AuK1hfj7+ARLz3oPmn30HOxZaFILqa+2HJ92R9SKWXY4fN0cvGOwi6p7CEMdGZr/XGlo8TD8RRzK4iE/E8lw4MchAI+pQA7dvXTmoHyjWCIZRDdvvzeN0r0J+EpXuKszdhM+9q47qE/1GRpJ3eiT2vK6FPt5foZ6/o2/6NAnU4do5AUOegDkX/W6HgOZkLACOcengqMFe82nvYjlf/LHcDXyVjMH4BFYQ7KZJ/i4faywczVjOg6bX7S5f/h+Wlo52OS1hptyP3Dbx93GKeYKcyoG75QFQ6WHZICYpb6aOLwGD0sF5+DxmafDmutx9ll+DtbxdVs+6zQWSFLQz8FsojTuKx9Mw2sXH9jXA+2ZRPu6bYEakLS1PzOofz2lE6+QXJaynH+5r2jhXxZbc/xlFqTe/3JNxypRTVzz1PKzdq1FMDmPECvinRDhPzhoWD6ofnt3t0GF0aMoKUVuU1wpWBNH5ixQFVB7cdIvruuLZVEfMGbgsOxFnVb8bAY9me2SPWn3YsT8cjLozp4hrcsc7Wuz6Gmz4RS4GhK7hXwwRaFW6xZX2QabhbSNhpGj9aPb2X6zXnFeT9ewk8oOw0bonFwyDBXy8AfSeLOQpH2MIJdMZDPbsmxQQbpR9iPrGPTtsqMJNcssjnOZpkcneasbzUw0o6QEaesUAs3+t7HpANmlYu90LTdvbq4WU2Q+btiudvUI24iiC+2M37eAYl8lnCk5JKIzTNbZMWmoXXjsSQalM2lxrdZV8Y9i1huMh2LJZ4QioQLailez+jpcX0nihvxkiG/Q9LNB0GmBujk2Ex6GpKJWhFsHufgblEULNg46oVDcww9CJqXFRk9bbBZun6m287Df8LVn+TvJORAPtynFRP8SCRrTQNLqZT/UQR+hjn8VWthesxP26Em4VlwuDKNM8lQANw2G8BjP7C93SUc6LPTxgwiD62XnzhNng5Xbiz29VRjUmRWX3eQbS00KRURltrqd2O1mIVnCj/yx1YSGuBpyBP4kLEKw5CE3VxjyyNK0MR/a35ZEjC1XqFFPJ5cN5t7EDLC2EjFuKPOZHwtw/MPiYqEJ4QiFlLH5CpUgCY3MEB3mnISHZ/IlfNkweYrdKG4YqMQK6jpO9J4Ssm5xnfmGdvw6bUhBJvAZk34KKViMH2YI6QXDuHLNjkNkxYZpaaX8g55inWBbuMBb8rLnjV4TfoI1E7eUP22SoDQ8vKQQw/Z927NyHU4sD7ZlbaUuewwS8aA/ouf1Vb2Oy/rWLC1YF/aC17I1jIc7j9Aaixt7r9pDsLI7Q9JsFmLMtBicthoXzpFdvQw7hfYK3bdZet3yFwDYNgzcWhpVWQmMonY9NpW1ooj1CwnTPGu7LG1EaQm/jTBVOMVU/DjhOV7kC54x18ciZJMibpE6tj9EUXfEHPJuCHhumEfaloflpKkoYzXA2mWG4/gyl/GVQzS7Afiijc0L/DwzTQd6IvvDMl392jKfxeCwTNfYJvAsTxks0GZ/nIaVx5YsHKutWLt9SNRkmW9dXMGgD6G7LMsQLsxGHkuDyGHVYpgwEDywv0027/BBurTOWGI+oKGfViy32u1XLhLZJV+wq6qdkDZrimdyBElGZAMKKls5jK9BnJ8aQbHy4ZpDnxl6TvHSh+iSlZNatmIib/tiK5k1OY3ZILxiOo5MHq1zKS5z/6qtyIH36g/NErk0sUB4mM4yuPjgFrULU91cyQq6Mu1eEuYT5lyzjzpZcT28pJl58uKuqCAgZcKj8UuZrUhV5xn/ZofKugTGCN16nYmGI3lttRj/VLMi7JVtQ2h8IPc/9vVl/QlsgZgguP7WUIa922PVy8QLccPbNiLA8RedVPs9+X6wMXLipZs1C0xgZ54bvLglz09S2MJt32CTnG5U5Qzr/IzFAQugmxio+mqW9GnZ1x3uPD8lRYUpoXWs62MnWC4ghaQ47zUNZhdadDNFJi+Uro0wPrPIQvnIR+6G5dfxtJvAR3bXONSqh6kFVA1RRsTpOoGZuQOMRbDhUBzNPUs8mMQ2bJ49kJ+dtATqU4X22qSTWYX71kd2xc1cUEwNJISZcrFULgtF7NkqhrSNEE7VosAWYKfmQUg1/Hv7cAnLhI60XfuEKmKG5P3TIDumRXYZAGE5kQxx0UbK8mm4+BofE+8p5S32UexH28fBZHe5QHnECNNAGSYQ0VA3hsj4CAMgs8HMuQdjJcdns0C/JKj13vFA8HjNWmDmSZCBXoA3aGIxLnXo39yAvd8aMFa9aHoTwSTpXSNuQwafkBMBbZFaoRWg2YvLnyTrYt22mBkQEAvjokEwFuJLJBGabJUTWzvWJrMvcxELo2TPUdshHht5P1nRy4o+mOXd5VkNgOLRdePd22XRBTOjimkpzTbAA/lk801MyzCcN9NmmxaG21Y92EPSz5FkEtO+4HHTQ3dlyJ+ppY60BDfTgxMzl8hMIixtwOyaRsOXqdDkDsnOp9iZuIlZpiMstWL3C/knmY6EHtvsqYshdNHrJyZzmLut+XEaGg39zXorJaUPxnMJq0CI2ABYdv8MM2ijDcZFucfCTwAPmzVKc0aqw5qSh87fKM7rhwLj/JG1reNyzWxSXdtyp5koSYKspEuT17kdIcDIt6GKREdZg+0P3VMb6p6AGHCPmxLCKBu/TVoYONZlGY9i3rZRrJi/mBFuV2h1nEX3r2E+1WY4YnY3zbh1ahgJzZjVj/Tgmi5RFqX0bVejHTJuN8jhudsrfsyV+Hvc2YSTDC/tto0Ne6RkwpchFklbCKac5hT1bW6CyJjKF8YsjL9wMTQGz5vz0AZr1GVuH5pOVktIqU+zHjzpU55b3zIpup0/rVaMG5NABN1R0LSQDs0hHTDlGCYcDx+b3F7dcskumILNDLPNJhQ6VcvERaiYe2tjqewLGCb2yLzgslT6kJKBdjM9zQY5svND1vjQx50qcY4QBYIzWTMVLs9F225NlV0SCysAQRb2Ke0GpU23YmeFMAUsHmf3n0boDSFOmFtuuAgtRXO0fvvcjmw2A6Ar6rNJN4V4wYox9WnLWhdmABVyyHGM2Kr+ho6XnOWYTzZRW6WGK7FDMD8S8Uym77spTfC7KZJ7af5JckdKoACho1DBUkjQvguUCSbLkozCpPTyMc3Q27otNoADQX7ARfty4bse8+WThrqlpEC72kecx4NeTtouU8W3D5uAjdtlMFx2MQ0NLAdg2PvAYt+x2s6sMjMsMY1VXHU0jsx2SDFxsLD0WCTpbrlverW2d6J155ZJZYNiod0o5B6GCaV+iqTbXQqp1lLoC+wtoP7LZgbhsTgd9LX8YWVkpq1g1GedG5ahHlsYICX14V6znYtnFuwA/n2cScbxmfT7Y2+vDP65vs2Vyf4bQYeqOBaVpOozwMowD3jHKI3dkLATFWjNTMmDsOwNjsqMMxc0ZB91jTerjYwEpRB3YQNsuNgXUa2TJoPCmKzNysZAKxG5gCwLoWYDl1yGZrHTZGzo67xWiRo7SFxIsl4WqJGGLG6pECTV5y1mTmyPGEKnQ8xS8semvJJC6fIAHY7VQ4dpSmdqPNm1Dud+80uNll0ks/eTkaGNL5QiCoj81Dk6NqKLMQFHS/CBFIh47e0UmUpsRucII0Wy/JGZoJyKFRFGScjpc+WEEYmMTeX35BHWQst0mpA8uhfZ+JpWOaHcLChwWb+CCDgJQxsW0Jm5yawfLOBwjQBgygJgqpp7z/7JZaOnyuk+Sd8lPiyAvLZ5wSYMo2CzLe2CEBDJwgcU/MKg6lVtGeqHSmJOVDVX7QjZKhpzZggX3CsuHDOzRoXFaNcCxBs7s9qbQ2yDNPuqVjT1ogpaQPiICbVvpVXmUCXxGUh/jLe4rNB0aOGbNZHi+6T7EeIcgEbVwAJEU+gB/UDKtTD9mLzjZsz8QGGE4psKLkvfW/F6xgQ1a9shUuxhqkINQays0LMzvYf2ajjeKMMT0dip8YXN2hGzTcTjwmMyzVS7EFTAVYIH4rzHcwmkWRHzwkPKnCon9NRgWO0jL8NTZyhD3bhCA420B00H2HSmNUMrrsgZTwwNT49x+RZAqAbtkSZuF5HE0OMWksrCNOkgDt2ifrtF5pNBxcwaPin9wPrY2xcmXcW46kv3pRt0WGLzug0TrJsrFA1IT1eJ0WSTONwPSlUIPmXdxT3xzfjEiGB9s/ZTBM8NyP20hk3DBTjxLSU08FFkNMs5CCt+JpY3BXzYP8NE7a4FrROqIRfrH+VYlgfQKFu6FRXQNJ5BiA2sEftg3CoV/+gC0zPAa0DKHjGxhih3sP4Jxm3YJJsZtcgyff3YUhvJ1/YhWyAfHga4Z/Ii40O30FqAVWGYz6xJ2Bs2Z9YuZFld2pzxb1lzZaCLsCZiG3XpeckimibqbqbPazFWVoWVpMOL5cWze8GSlWDbsVhNrqcofrchBbbUNiwsq6m+H5LhUZPj1p0nVHQ3kG4F/Qgu+9OwwzMuRVLfCEksUZmdXaCQ0JhKXpdYw+poBOppscitJCVMfavPjTaIL48nY96WcbFqhllsnSwudX6Qr7pZ88CG7GuSfO4zTQwWw0zMeiNifxhYgcSMg2Srdl6xVotidD+a87bKXQGjHZhWZXEfj5XGAocQw4PF2auMd9NxaPkYPk4Wm0C/32BaWEK2zWvLFDKsvtn0XpMBPqSJZSRrbJTzof41DtAghruxUCgydgcNBvaKTsGVKkxIuod1nz6kvAyclJrm1MxKIftqLk9EER22o8OG6SOkhcQSDqvY7ZJBHwF8YHBBt6OlJCsjNAYlcNWUethN2xmjNbd4s0/TZlI2vZM7hXupGG1HhwzMwGMK03CbWSpNtpKdvG2T1zcSRpOdYyxtKkNx/rOEBjNJpIQuzEJ2feEolArkAhisxpqqUDJOZgs9C4AY2lg3i7hLV6Zl2eCW3qIGGk27rd11mcHeaBcC1o3SY6eYTwAGHj6CKPdp3gEZfGGAb9TQjc9mf1Z6Jk8TX/MNxrHqEWcYbGCS8tB2Sd+vbBRMzI3U6i3T5LLgGbnuhDG9jGXUCcr0UJzYMJgf+/21bPm8keham1AcFHpWd0zd1uBUSDIrkJQoq9/CMTBamqERO7/Ac0j3Fwg8NnPacgRiMC0ET9nvCkM7rOEoWqjKN0+Lac2baIsud0LoGjSbzM0rKU4k3Rru2qod0ordZ9mPw+XU7MBkq3n87RAmWzZkAPSdvBsY+SS2ZLF3w9liLAgP3USThMiJPcCrjPMjAgRZsHUJEPn/d8SpcSMLG+8snGuJU0WQ9azDKLKZbLPqVgY12R1zgaHyABGQGwT4xAMFXSCYUgUUc/PjQ+LZmb9puzfLJIXxbzcIHX5tC5Jh5RZ3k20V6jhNAy/bFFnCNrv59bumYpgiePLZdz6/EsY4CxFgb1wfbUYF4nOjyHEfcnIOqXcbjT5IpLV2RBaGCT9gs87yDiyfvNY7vGRL9/RNNJ9zMW+840TZJ95oFz21zBCWQdSo7lrm92wlsyevtTZyHkJ/t2GlBjBMULGwh+DVLMfQ8AMgXtigWpZGUnFcib7ChZsWvsDBKdBpTrAam6nR+uVQja14KCX1IRIQDiJiEHY/rW/tEJ9F7uqO/TjuyADCY81PWMvWIk61sdt1BafZ7iubiTZpSWNK0wsShvaGoyKnygCzFdM3k43TFa5u+3BBja1prbHRsXjIN+j6T1liDVcITy+ULIVpTqIf9ujuYilZia9+1iyImcSErF1ULfAs7MWKP08z70CQw1CloM85jMhA3TzxfZoeeElo/IZ3sspMFcYnLDAI2I/bKKHVazxS27JE5JU8bTtjbMMOIOL6jXBkCGIMZxeKddBV+9UmT0TfQd6TbwCmGJujrNK5l21VQgaGgz7uBAAt+mOgaPEmofrp/YeUM4Nxz3Muct02qO2JzVptADb1ZWc54sglW1XzOy3XB30grWK9thT8whASzV6hRtcgLnTwOmsCXgms7rZ9piiaWeWpDpVy0ISLMZ3jWiZrWC8mO5wSJGBtWHFts79opodrYlQkkVrdb4u8OAnr9eV8XobPQxCmmBPdUWSflpTeRhdivfpyHskE1sghDCILzAkQsQ0NZDWmc2+rWgpEHRsxL6sHUAmRh+WT6cUZgy/LxSOgna0TNfpw7aCPJ/lh2UxToM3+YfaYtbO0dmbZN6oBTyZjgeAUgcd9i6/F10w4dwc8pHOuu8OAdmh7TILQtDxP1zPZWRVU1oMR2YBfDpM2gIYsdBIKkPgHy1sXqptisZl8165M8GBpxDdIRw1T4sxGr9dWEqalZ1q1xSPvmoX5foZ8tDABFfAZbGJJ0sgmjp8VOGyHgG+wZWXdmSxxDB1mat5M5fjsdniPO3ajd3ywdIc3qXEt8alCz/YrS3ccpvcbPjGvjqrI0ACXCrz03amfETe1+iFBvVR6+F4A5oSIfSaDaLUR+TZyZKRj7eGckzCrPrEC05xoH1L8t0KUitq0YB4Lu5aVE1trYxFk15md1YS405Lue/LoLS0ETWgV5CGjHssBtAEpxn4bdodKF5nGzpN20Bsg96JUpA0P4gUsLWdeW2BrpiJaBsZelPHVEf9LWxtzhDe3Q3OoWXUrhAMyE2s4tuI17xqnNqubcuZYyWpvbDfc7SFskDLA5rV6RpkrFYvb+ka29aaDHyp2a1ILhBXNiA6TMaMAREQsTlx0bNiq+kFNtPsH/3i0VQw4lpJElxB4LZ1Se4my4eiAGrOZxMmm3WVK1mb2DphrlXeIKx7mHBWlU+3iO6GEyxkCY2a1qUO3eJAwvc0s7UEQychiBUfRSzoT88MN1fuiDsTYFwCP7WDK+2abqNPiSmiFy654GxYfhQ2zRTGZyYdpfFM4Xz1MD9djFTKfS0XgZSA0wMz7teI58qAwGcJm2SxVuGc39iuDec5EAUGxateRfbVgEIgRDaH1rNHKL2z0JLkD9ha5m3AVpr92rIBgh5Vyw6jTHPyNK/op+kIAHjWFwXBhOC1atNzUuNFm8eh0tsG39FTiWyWdziwD4IUTB61kkMwc2kmtvM16LCNdYo2xsEnKvRFR+iT8181qgoiqi6wcgihhGW5+p6xMbZvuDQWpbShWCBAHkcOomJzDUwQdl7fezDwLxJjEH4JugRcpAtDWW/GDi45r1SFM58IEjwRx4rMw45aSvqdQIO4nnDpMRkkaAsi3m5UYiM3a9PdM7KJvB23D8ZzGHUyK53JzWOyHAA+wxzGWw3F793AltXIlyuyKREjnm9yK7D+K51DFGzeaeVC+iHR9Cp2Eo1pSJluDypotbP+22BlAnedCJ8CcrkQqbciZUW1MPzmeUqdWOADqF4HT4565mJDpwpWmpIqF2ETFV/3us8spzbBXOAeJkGeb77pQot43y9LpG+BiouRjrevl1sVTwumFpwR/YFkk2XhYY3kbitKaXQCqrQY3d860xSp9xqzCKKjZbwppt7j1LpJJBK1ZDe8o5nlYs4X/xIeYJlQYpSRbJMSuSaikzYUopKhDvJw5gbvCIFF2LEJ5bhi5tlAFsAx7ZzPFvGf1AuUw2ZS4qKXeXpK2/sTdZ1Xo2lgYVqZrrKvWM9EDKiK8mVj1m/TMJfhNTF3+EbCFISvbFF/iv4vNuTH1y8bWeAorHn8JK7SL23Xcx/7DAtYty63uulLZha/MLFIVU7KpRYx/mh5+ZMB/u447amxJJL95y4VHUbvM9wczCe253YX+Rk/qUzK3abNrilKRGHMOPY1YOLZ/k6WASXq7c4c0KF9oNwc/7MtCYIeotYyDJiO4/QwTYgdSyv4Q0cWic++Y6je2ZrnIy2o2qIowZAQvJ9a4pLCTBWBrh2nOPkVcYkqs1zr6+GnRaRevlgKJx+3GuzZrjSbpjE9ylbBhzB+/DMsBspwiwShBJtsGcIcMxLpWKmE3gzPKbggbG7Jt2NFRdiO9pkjXjJnLZSYdlP8jODNXTYeMa0oSCZ8Z7SHgJGOZ9jAhh+jIbs9NebSQ5oaRCFPUCOjFSaPV1Y7u5muBPmn21XZHyTrxx+1QTmLNzpZNJTaD60U02fhxuH8lH9lkGGIetlDcmMF52ZbbGv6nlgQNkPoQLOs2rN2kqhktPkWsNnvQnUSBbTg/pPhaomVzE2JqXARJqAhvbWG7bp7D7sIEMn6CYAh0FAOctCPrBpvobguLimFzZpDytLMj4TQwhQYsNFYg5LYfMTV1Q8wRZmvMoV0nEdb+1AmeuonB/STQig5DmMFChkEjQnnlPkCC4oZIrt3zwatVgdvTtrZcoZXHbKY7JN0cx4qaL0IjfMKspzk06NKF2RYUfqz4TTLRY9dtOLLnsAQR6slYZVtC+DJuA28MK9H2WaUutvRRNwn+yf60ZAVLEdtg+kxHFjjACT1ixrm5kWHIbUDb3U0kz672G8ZtbMtr9UlbsjqLyYUmnEsT1iyrE7ZAWzTzS47qophQFSe9hMSRCJrEAk0AA/WYjYFjnxSh1JZQEEBcl7t23o5eEkpKOnuWs9rtYLOUphSEY+WE9FVYn48aFoJ+rsil5GOsbysF4xQ5UxeRMiviFStA7km2JV7Qj7KIhDAwcfiLzVws82aABU5G5gFKeQbJ8BMVwTPNeThTKABij+hIwKDrzCTOrSW0d332C8UUZ4i5cyEiGeOOBWYVh6kBUOEgDih1bk03WLXitHho6Bi4tHr+UMties2nnqcWpgFyGbFLDl7Vmoeb9WGVN5c+CIidGcNi5ZKUcGg7USKJH9YIoAJNTOJmjUrxiWrMJ1YFWLY9uXk5TKZYEhijZ2rk62NIGsupFvNIbhaR1nbDOYXsK9JLJ6p4z/YcN6xLXbRMCsCKXeRbdl67eWHaWydK005eNp9PXYBXpLKdKP9rEW6MWiNje3hvWqOHzr5WYpyzZZpTtSbgYfAMqHDeHXCORTMJ80dGZf1YteRK1EWjkwJ4mzroF4NkF4IBB+vYhTEAGClNkoiQEEi2E7Y+L1UEzB47+mqgjgETE1lv+29JNNBS4EekmptKcCSladGcGCvwtlqS5BvHpJr4WHtaBZhSYWZvAp3KfqpZUwxmYzarjQa6ldkwRENbH23h3EdTOPTNarVHlkySkhGyx1ypc9yeyTBvaIO5fVJhJ3nchkxqgolZ9wNMrxJrp2A53nA1zEGwEvSlQtvdb9F+yNtdOpy2pxVPK9uBpdqot12rx56dMEJNzYV8YnbHA23dmmcgWMhPpelAeJclLUwnRqrWcBxlOUyCaIf581tLUvNcxQ67JCHZMiZtW/HRRz/2pBqQWpSG9kAGXLdPRY+JeBfC70fIlDlvzBWvRtPJlK2eLBLWk3a7NfDT6gW9hw0/P5zYE0W3CYVRkuGHPRaLjGxZb4R8zizHaMZS8ldFxq5b+HKnC6ZE9sbzUSEPAE4M5THZtvUugkLIiryZ87LHrGAC+bLMasmH015xRmMTQ7IDVZ83K4Isa/apVP9x16agmSsBEfM8bQMj4Qke6Sk8h1EEKeCDNaPvrO/oYpeDsBWp6ugByXBheFtLRICq4NJVq83HT2VZyXF7zEChsczGtX9ykAyUgVxjVUukB4ek+tdmsXVbYWdYRPvvji8DI/+Q17chyCr8w9xjsPGmTFS0iimZAkDaRJuFiy1/KuqEdO4H0CtFpbNyMdQiag3ErQuBV9nR2l0sZiKSO4Rrafm53wjohFCAs4X1lGo9dNZGIaSS/TPc+2H71/PGV7pVyNARVlU/acyQuo3w+LiRBWjglEYIvcEWy9IhFEdrIxRik/TFbWyJAMm79yXOF2otWXhbneGmsRiEVo/9rr5SqOmpQ8iJlYgz1dpKP62sIna44FwxOwj6PqFctmjJSBvmw5IFFzjpBRJluwUAjl6SilfT5LTqxZn1UMCc7Zj8wyAnbRNG/RizIdxdPVmEXEJRyIPNsvaX6HZ1w8vxMGBLGU1wH22bYdbEtSTY4s1LQQ5pTXd7mwitpEKgruRWCg5DmwzPfFjuWir6mVW/KfcNNFVulZXmf1VtJdVrHMubkeIKl/E6iB+VTAu7xCgv0bTN/mx9N/MpufNbTy845wX2Zuj34yfBLukShwlVvk6GNUtiU0lG2zebosj0PMxt0RhPom3XIc1KhhsyUk5/Rb11DNFu+sX4rJSQRZgal4YiZVIkx5M01jK2YRHzM/5l5SElZDcs5Kn7YYezw6+94CCkNuraIoLg0STIbrlGzJnpLMzFkpO+K4HlMB1Yb3ny9m1fIZqFtVlUjVBhthCSNUA47Wa/mb7f9+Q+wBCqTunGDy3mOHZyEqbj94kbfhDOBWrEBBELY2GtEBCUhqmv3u+wZgUDO37Y0Od+54Kc2iTbXBkp0VPGcQ4/zE6n9ucZtl2tmzQ0aUs9O27L5duo+M7HrJ/on4ljXa5pzVrmZgzBvMhArT2oaPglPbDvGTIg7ISxSp+hsEosQ0PkbyUzh7LRgq8rlzl+6QehOQGJZGRlwrwmIRELa3NapLQDfDAtCZMVg9vQyLA+6oeVKoIANaOKoV3Wl79WfWIqwxsDn1l1zkUBVAJebJPKZM9eROw25AlFoEEXG+JquzL6d37WgKhleCbg11JECqwE7KwGOoyvZ9NxvAbayExVs8WUXI13kgbPaqKh5ksK0EIcaS5yozuuCbSIYmhf9P24t2cn6Ra/YdZP9kJMt/uu2yDpgMC/IVuT/JbRgNX4bJNPedqKHnebUiUjO5emPENAxCawMM4yePE3Zrbk3Y5V1HsVoPyBBt8tLLiDgKtA7GS6CaIZZ4d2AwcX6Gb5V8g35IMevRxu2H58/SleQeDpwwczeXXfbJQ5koNK0IqwGAVAMsp+SUYyvysNTXgJp8ZdsUYPbiGyDQQjC1Po7dD+gKSxJIzKB2JFA0+c7JALcXCiasIsm9m8vXxYKsCRrJ1mAtAFgLn5uqO3uvJABrNhCQTAq9U3wmSftua3msHxCZeZHLNk7a75EnovW+3cjr9NecKqYQXPki0XpIphgiI3hTWVbXBYwiOYI2MV+smyCrTRS9LMMbmzKGUW7Nj0dVOYwuG8knAUKp78DvPUd7NVxcctXbFZWjRbYko7n7EFrdNlNVKeeGXbQYNFReIanjYZWtYR31sghQBrkQpwJlGwJbpNbVMcnnmXcyB0XBsyTCHMO6gYYlFt2V1PEmVF8MwwtEj9pjfVcaeHw0nRezf9DVjiArvEycga6Gyw20kDT5c0f/Jpwwbf7LNu3P2AiVephyDsmNGOLkJIFtHM1EQY/3DfCc8joY7l4jawUWy5AekyYYZ2p/WBrWygvWsBmAJoWpQtUmaWqgP72bIL2mQLCZ7HSZlqWoRHiXxCcGkr4+DUV8NGZccnGUjSxZ0xGRNgrmSSWTNxnhUNwxuDXmuZiGjY2psh8D1bSBJND8Fsrb8htl75ZkAszdByZii6lHkbMCyzaxSIu3TujdYuQ/Rx5Q+YRGRxHHR08resjQKCAvK176teHHtqw51MxlZlMRDaqoQuDSoip8ul3ATWs+zLx1IKp2gzpdegbmOgwvWmAEiRk00c7eJfziy8nfkMFyYQ2xs/CN6qGP9WM2YhNRGWU8yLlQOLb5N56djP5gwYPMlkMww4XoMKHe42Nm+Vzn8m3+ZYdMPdFj3hNhxaCO2jOCWDbIZ4LbGc0RyWVRjN5rxfNfXptIQ4OnWrWa9IqnUpH3azLJ1eEqugAgRfL07vtmOC60nmPZUzDMgs4c0m/0GgSiu7PcpNhF1LJGuIs0n8xNI03Gm0SHOIYAStMQj9nq5/K1mvWJe1VTYEUpbROOTtYeJDqDb4VJJVYPkJetZvsB74droARPMo6Y5wOMtqZ3+cAD7hvm3UGl3NpO00BRiQLldRYZk6i4TaBK+TQ1414t1fm3GnsxqZcL3iQpBqsdlN/NSYSxeX3JIFXUozJiYZ+7KZOzascYDjGmbl0W5kp9rcs5uH0cRvFxQc8glGmRsicYSVxDAQ5ts0inN9yLinBWw3wUHU8AXpjuykkvv0J+cnvslt2hVTXavoOPTZsqpc2+i57oacrEfSxRz0ek082ExsU6gUYlyNUip+Rz+rZTI0djYz89KyTDZ2Wpf65dbD6VbNtetmTI19LQ2IwsoVepmL6iDdIz7admWDvHMVCr/sBYFhoLA5P1ZVPFIxit/vGoMifYeRCaEAq6gdz8xlDQXNhqnEBULBOkMl95WoA2ZiDsWSqquvirx6tgJCwbcD2SWbT8DJpgJYiJZP2/kEKzsTvcxO3Wz4aPWGs5rb2+TQWNnDb2Xuhb4RIgTGyyXPVhJjyO9zv2vlDIs7xrV1cZFzQRL13LKJD3VKeFoCDV1z5hDQMmNXK8yEyOND3xhZX/1HlnxEvNrPbn64vdKp2kpuVQdQv9iy2nOlk+JKHii+sdiwCYKSqyo2soBMRDaUM4jV5ci+4sYJ6IDALS27MRPNo3RfE/HKnu7AwABxVB0MGaK6MdPhlOcvArYRQO0QPjokSctLjGPTULDK4A5aXk2wQbnYPXy2Vbt3HpTDuSST/qwGsGcasgZZ1cACC4HSdrS74ECKzbCApuRxi1ATJsRYhShm0mg6QM2Wgl3CZjOWJMIHpY08Ocl4eAEKKwi8JLAedzKSiWqmrIR35hxavRDnlTIyrLbjuGPEsuVjUYYBs8FpnEQXhC9AHF3G4T7WbGOk5OrQ7nBzqG6D/Tf7qqhJr0aMuqbFvECEw1xqiwemdXgkrr6hF665in8gqGMJ9ZZ1lHOvCVfv1EjcDEPv1vtdvu80GceCXlkYiRBJEfYmPeJa63lRLWmeSe5OenNl3KAKWU8oQdlroNYwX8Ydg1SRGWQy6fJaBbS2pK9lmZtkjmJgGvFeZZWp0UWhnM2PPNFOHR59Ein28v8CpMOC+g=="
}
}//package game
Section 111
//Movable (game.Movable)
package game {
import Box2D.Common.Math.*;
interface Movable {
function applyTorque(_arg1:Number):void;
function applyForce(_arg1:b2Vec2):void;
}
}//package game
Section 112
//Mover (game.Mover)
package game {
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import game.*;
class Mover extends GraphicalObject {
const DEG2RAD:Number = 0.0174532925199433;
const RAD2DEG:Number = 57.2957795130823;
var sourceMap:Object;
public var px:Number;
public var py:Number;
var exc:int;// = 0
var type:String;
var extraVars:Object;
var snapAngles:Object;
public var ex:Boolean;// = false
var main:Object;
var destroy:Boolean;// = false
var drag:Number;
function Mover(_arg1:String, _arg2:String, _arg3:MovieClip, _arg4:Number, _arg5:Object, _arg6:Object=null):void{
extraVars = {};
snapAngles = {a0:0, a23:26.5, a45:26.5, a68:27, a90:90, a113:154, a135:153.5, a158:153.5, a180:180, a203:206.5, a225:206.5, a248:207, a270:270, a293:334, a315:333.5, a338:333.5, a360:360};
super(_arg1, _arg3);
this.drag = _arg4;
this.sourceMap = _arg5;
this.type = _arg2;
this.main = _arg6;
}
override public function cleanUp(){
sourceMap = null;
extraVars = null;
main = null;
super.cleanUp();
}
public function initPos(_arg1, _arg2, _arg3):void{
body.SetXForm(new b2Vec2(_arg1, _arg2), (_arg3 * DEG2RAD));
}
public function contact(_arg1){
if ((_arg1 is Vehicle)){
if ((graphic is Hydrant)){
main.createWater(this);
};
if ((graphic is Mailbox)){
main.createMail(this, _arg1.speed);
};
if ((graphic is Garbage)){
main.createGarb(this, _arg1.speed);
};
};
}
public function behave(){
var _local1:Number;
if (exc > 0){
exc--;
if (exc < 1){
trace(9);
ex = false;
};
};
body.SetLinearVelocity(new b2Vec2((body.GetLinearVelocity().x * drag), (body.GetLinearVelocity().y * drag)));
body.SetAngularVelocity((body.GetAngularVelocity() * drag));
if (ID == "PARKEDCAR"){
_local1 = (Math.round(((body.GetAngle() * RAD2DEG) / 22.5)) * 22.5);
if (_local1 < 0){
_local1 = (360 + _local1);
};
graphic.gotoAndStop(("a" + snapAngles[("a" + Math.round(_local1))]));
};
graphic.x = (body.GetWorldCenter().x * Game.DRAW_SCALE);
graphic.y = (body.GetWorldCenter().y * Game.DRAW_SCALE);
}
}
}//package game
Section 113
//Pedestrian (game.Pedestrian)
package game {
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import game.*;
class Pedestrian extends GraphicalObject {
const dirs;
const dx;
const dy;
const revHeading;
var oldG:String;
var oldH:int;
var heading:int;
var gait:String;// = "Walk"
var px:int;
var stopC:int;// = 0
var variation:int;
var py:int;
var runC:int;
var headHist:Array;
var oSpeed:Number;
var drag:Number;
var main:Object;
var type:String;
var oAccel:int;
var maxSpeed:Number;
public var tumbleC:int;// = 0
var badHeadings:Array;
var collC:int;// = 0
var dead:Boolean;
var accel:int;
var colliding:Boolean;
var oldC:Boolean;
function Pedestrian(_arg1:String, _arg2:String, _arg3:MovieClip, _arg4:int, _arg5:Number, _arg6:Object):void{
headHist = [];
dx = [1, -1, 0, 0];
dy = [0, 0, 1, -1];
dirs = ["R", "L", "D", "U"];
revHeading = [1, 0, 3, 2];
super(_arg1, _arg3);
maxSpeed = _arg5;
oSpeed = _arg5;
accel = _arg5;
oAccel = accel;
this.type = _arg2;
heading = int((Math.random() * 4));
colliding = false;
dead = false;
this.variation = _arg4;
this.main = _arg6;
drag = (_arg6.mods.deepfreeze) ? 0.99 : 0.95;
}
function rand(_arg1:int, _arg2:int):int{
return ((Math.round((Math.random() * (_arg2 - _arg1))) + _arg1));
}
public function behave():void{
var _local3:*;
px = Math.round(((body.GetWorldCenter().x * Game.DRAW_SCALE) / 54));
py = Math.round(((body.GetWorldCenter().y * Game.DRAW_SCALE) / 54));
if (gait != "Run"){
if (stopC <= 0){
gait = "Walk";
if (Math.random() < 0.001){
stopPed();
};
} else {
gait = "Stop";
body.SetLinearVelocity(new b2Vec2(0, 0));
if (Math.random() < 0.01){
heading = rand(0, 3);
};
stopC--;
};
};
if (!Game.car.onStreet){
if (Game.car.speed > 10){
if (main.inRange2(4, 4, px, py)){
startRun();
};
};
};
if (runC > 0){
if ((((runC-- <= 1)) || (Game.car.onStreet))){
endRun();
};
};
var _local1:Boolean;
badHeadings = new Array();
if (colliding){
if ((((collC++ > 200)) || (!(oldC)))){
badHeadings.push(heading);
_local1 = true;
};
} else {
collC = 0;
};
if (gait != "Stop"){
if (tumbleC > 0){
tumbleC--;
if ((tumbleC % 7) == 0){
graphic.rotation = (graphic.rotation + 90);
};
body.SetLinearVelocity(new b2Vec2((body.GetLinearVelocity().x * 0.97), (body.GetLinearVelocity().y * 0.97)));
if (tumbleC == 0){
graphic.y = (graphic.y + 10);
graphic.rotation = 0;
startRun();
updateGraphic();
};
} else {
switch (gait){
case "Walk":
if (!Game.ground[px][py]){
startRun();
break;
};
if (!Game.ground[(px + dx[heading])][(py + dy[heading])]){
badHeadings.push(heading);
_local1 = true;
};
if ((((Math.random() < 0.005)) || (_local1))){
newDir(false);
};
break;
case "Run":
if ((((Math.random() < 0.03)) || (_local1))){
newDir(true);
};
break;
};
if (!dead){
body.ApplyForce(new b2Vec2((dx[heading] * accel), (dy[heading] * accel)), body.GetWorldCenter());
};
body.SetLinearVelocity(new b2Vec2((body.GetLinearVelocity().x * drag), (body.GetLinearVelocity().y * drag)));
_local3 = body.GetLinearVelocity().Normalize();
body.GetLinearVelocity().Multiply(Math.min(_local3, maxSpeed));
};
};
graphic.x = (body.GetWorldCenter().x * Game.DRAW_SCALE);
graphic.y = (body.GetWorldCenter().y * Game.DRAW_SCALE);
headHist.push(heading);
if (headHist.length > 5){
headHist.shift();
};
var _local2:Boolean;
if (headHist[4] != headHist[3]){
_local2 = (((headHist[3] == headHist[2])) && ((headHist[2] == headHist[1])));
};
if (((!((heading == oldH))) || (((!((gait == oldG))) && (_local2))))){
updateGraphic();
};
oldH = heading;
oldG = gait;
oldC = colliding;
colliding = false;
badHeadings = null;
}
function stopPed(){
switch (type){
case "Clown":
stopC = rand(200, 450);
case "Robber":
stopC = rand(100, 200);
case "HotDog":
stopC = 260;
default:
stopC = rand(60, 250);
};
}
public function endRun(){
gait = "Walk";
accel = oAccel;
maxSpeed = oSpeed;
runC = 0;
}
public function startRun(){
if (((!((type == "Clown"))) && (!((type == "Mime"))))){
gait = "Run";
accel = ((maxSpeed > 20)) ? (oAccel * 1.5) : (oAccel * ((type == "Robber")) ? 8 : 3);
maxSpeed = ((maxSpeed > 20)) ? (oSpeed * 1.5) : (oSpeed * ((type == "Robber")) ? 8 : 3);
runC = rand(100, 300);
};
}
override public function cleanUp(){
main = null;
super.cleanUp();
}
function newDir(_arg1){
var _local2:int;
var _local4:*;
var _local5:int;
if (_arg1){
_local4 = (Math.pow((px - main.stx), 2) + Math.pow((py - main.sty), 2));
_local5 = 0;
while (_local5 < 4) {
if ((Math.pow(((px + dx[_local5]) - main.stx), 2) + Math.pow(((py + dy[_local5]) - main.sty), 2)) < _local4){
badHeadings.push(_local5);
};
_local5++;
};
};
var _local3:int;
do {
_local2 = rand(0, 3);
if ((((badHeadings.indexOf(_local2) == -1)) || ((_temp1 > 20)))){
break;
};
} while (true);
heading = (_local2) ? _local2 : rand(0, 3);
}
function tumble(_arg1:Number, _arg2:Number){
graphic.gotoAndStop(("Hit" + variation));
graphic.y = (graphic.y - 10);
gait = "";
_arg1 = (_arg1 + main.rand2(-2, 2));
tumbleC = rand(60, 90);
body.ApplyImpulse(new b2Vec2((Math.cos(_arg1) * _arg2), (Math.sin(_arg1) * _arg2)), body.GetWorldCenter());
}
function updateGraphic(){
if ((((gait == "Stop")) && ((type == "Clown")))){
graphic.gotoAndPlay((((Math.random() < 0.5)) ? "Knife" : "Clown" + variation));
} else {
graphic.gotoAndPlay(((gait + dirs[heading]) + variation));
};
}
}
}//package game
Section 114
//PizzaBoy (game.PizzaBoy)
package game {
import flash.display.*;
public class PizzaBoy extends MovieClip {
public var done:Boolean;
public var rx:Number;
public var dir:String;
public var endFunc:String;
public var item:MovieClip;
public var oDir:String;
public var facing:String;
public var sx:Number;
public var pizzas:MovieClip;
public var ex:Number;
public var ey:Number;
public var sy:Number;
public var pizzaNum:Number;
public var main:Object;
public var item2:MovieClip;
public function PizzaBoy(_arg1):void{
addFrameScript(0, frame1, 9, frame10, 147, frame148, 166, frame167, 175, frame176, 272, frame273, 280, frame281, 284, frame285, 292, frame293, 381, frame382);
this.main = _arg1;
}
function frame281(){
gotoAndPlay("U");
}
function frame273(){
init();
}
public function init(){
if (pizzaNum != 0){
pizzas.gotoAndStop(pizzaNum);
} else {
pizzas.visible = false;
};
}
function frame176(){
gotoAndPlay("R");
}
function frame293(){
gotoAndPlay("D");
}
public function behave(){
if (!done){
if (Math.abs((ex - x)) > 5){
if ((ex - x) > 0){
dir = "R";
x = (x + 6);
} else {
dir = "L";
x = (x - 6);
};
};
if (Math.abs((ey - y)) > 5){
if ((ey - y) > 0){
dir = "D";
y = (y + 4);
} else {
dir = "U";
y = (y - 4);
};
};
if (dir != oDir){
gotoAndPlay(dir);
};
oDir = dir;
if ((((Math.abs((ex - x)) < 6)) && ((Math.abs((ey - y)) < 6)))){
main.pizzaBoyFunc(endFunc);
};
};
}
function frame382(){
gotoAndPlay("choose");
}
function frame285(){
init();
}
function frame1(){
init();
}
function frame167(){
init();
}
function frame10(){
gotoAndPlay("L");
}
function frame148(){
stop();
}
}
}//package game
Section 115
//Police (game.Police)
package game {
import flash.events.*;
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import flash.utils.*;
import game.*;
class Police extends Traffic {
var timer:Timer;
var still:Boolean;// = false
var main:Object;
var copLoc:CopLoc;
static var cpCounter:int = 1000000;
function Police(_arg1:String, _arg2:String, _arg3:MovieClip, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:CheckPoint, _arg8:Object, _arg9, _arg10:Boolean):void{
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg10);
this.main = _arg8;
this.copLoc = _arg9;
}
public function makeBust():void{
control = false;
Game.car.control = false;
chasing = false;
if (timer){
timer.stop();
};
timer = new Timer(3000, 1);
timer.addEventListener(TimerEvent.TIMER, endBust);
timer.start();
}
override public function cleanUp(){
main.removeCopLoc(copLoc);
main = null;
copLoc = null;
super.cleanUp();
}
public function addCheckPoint(_arg1):void{
destination = new CheckPoint(0, Game.car.body.GetWorldCenter().x, Game.car.body.GetWorldCenter().y);
}
override public function behave():void{
var _local1:Number = body.GetWorldCenter().x;
var _local2:Number = body.GetWorldCenter().y;
var _local3:int = main.getTile(_local1);
var _local4:int = main.getTile(_local2);
var _local5:Number = ((_local1 * 20) - -(main.screen.x));
var _local6:Number = ((_local2 * 20) - -(main.screen.y));
copLoc.x = (_local1 * 20);
copLoc.y = (_local2 * 20);
if (_local6 < 0){
copLoc.y = (-(main.screen.y) + 30);
copLoc.rotation = -90;
} else {
if (_local6 > 600){
copLoc.y = (-(main.screen.y) + 550);
copLoc.rotation = 90;
};
};
if (_local5 < 0){
copLoc.x = (-(main.screen.x) + 30);
copLoc.rotation = 180;
} else {
if (_local5 > 700){
copLoc.x = (-(main.screen.x) + 670);
copLoc.rotation = 0;
};
};
copLoc.visible = ((!(main.inRange2(8, 6, _local3, _local4))) && (chasing));
super.behave();
}
public function startChase():void{
current = new CheckPoint(0, body.GetWorldCenter().x, body.GetWorldCenter().y);
destination = new CheckPoint(0, Game.car.body.GetWorldCenter().x, Game.car.body.GetWorldCenter().y);
timer = new Timer(500);
timer.addEventListener(TimerEvent.TIMER, addCheckPoint);
timer.start();
chasing = true;
ID = "POLICE";
}
public function endBust(_arg1){
if (timer){
timer.stop();
};
control = true;
brake = false;
Game.car.control = true;
main.endBust();
}
public function endChase():void{
var px:*;
var py:*;
try {
if (timer){
timer.stop();
};
chasing = false;
px = body.GetWorldCenter().x;
py = body.GetWorldCenter().y;
trace(main.findClosestCar(px, py));
if (main.findClosestCar(px, py) != null){
destination = main.findClosestCar(px, py).destination;
} else {
still = true;
};
ID = "TRAFFIC";
} catch(e) {
still = true;
};
}
}
}//package game
Section 116
//Sensor (game.Sensor)
package game {
import game.*;
class Sensor extends GameObject {
var lastFrame:int;
var repeating:Boolean;
function Sensor(_arg1:String, _arg2:Boolean=false):void{
super(_arg1);
this.repeating = _arg2;
this.lastFrame = -1;
}
public function triggerable(_arg1:int):Boolean{
var _local2:* = lastFrame;
lastFrame = _arg1;
return (((repeating) || (((_local2 + Game.FPS) < _arg1))));
}
}
}//package game
Section 117
//TileData (game.TileData)
package game {
public class TileData {
var shapes:Object;
var fillers:Object;
var pos:Object;
var ground:Object;
public function TileData(){
shapes = {t800:["Garbage", "A", true, 1, 0], t801:["Hydrant", "R", true, 0.6, -0.6], t811:["Hydrant", "R", true, 0.6, 0.2], t802:["Mailbox", "A", false, 0.6, 0], t803:["Box", "DAM_2", false, 3, 0.7, 0], t804:["Box", "DAM_2", false, 3, 0.7, 0], t805:["Box", "DAM_2", false, 2.2, 1.2, 0], t807:["Box", "DAM_2", false, 1.6, 1, 0], t808:["Box", "DAM_2", false, 3, 1, 0], t809:["Box", "DAM_2", false, 3, 1, 0], t810:["Box", "DAM_2", false, 3, 1, 0], t814:["Box", "DAM_2", false, 1.6, 1, 0], t815:["Box", "DAM_2", false, 1.6, 1, 0], t2300:["Garbage", "A", true, 1, 0], t2301:["Hydrant", "R", true, 0.6, -0.6], t2311:["Hydrant", "R", true, 0.6, 0.2], t2302:["Mailbox", "A", false, 0.6, 0], t2303:["Box", "DAM_2", false, 3, 0.7, 0], t2304:["Box", "DAM_2", false, 3, 0.7, 0], t2305:["Box", "DAM_2", false, 2.2, 1.2, 0], t3850:["Garbage", "A", true, 1, 0], t3854:["Hydrant", "R", true, 0.6, -0.6], t3855:["Hydrant", "P", true, 0.6, -0.6], t3856:["Hydrant", "G", true, 0.6, -0.6], t3866:["Hydrant", "R", true, 0.6, 0.2], t3867:["Hydrant", "P", true, 0.6, 0.2], t3868:["Hydrant", "G", true, 0.6, 0.2], t3857:["Mailbox", "A", false, 0.6, 0], t3858:["Box", "DAM_2", false, 3, 0.7, 0], t3859:["Box", "DAM_2", false, 3, 0.7, 0], t3860:["Box", "DAM_2", false, 2.2, 1.2, 0], t5350:["Garbage", "A", true, 1, 0.15], t5351:["Garbage", "B", true, 1, 0.15], t5352:["Hydrant", "O", true, 0.6, -0.6], t5362:["Hydrant", "O", true, 0.6, 0.2], t5353:["Mailbox", "B", false, 0.6, 0], t5354:["Box", "DAM_2", false, 3, 0.7, 0], t5355:["Box", "DAM_2", false, 3, 0.7, 0], t5356:["Box", "DAM_2", false, 2.2, 1.2, 0], t6850:["Garbage", "A", true, 1, 0], t6851:["Hydrant", "O", true, 0.6, -0.6], t6852:["Mailbox", "C", false, 0.6, 0], t6853:["Box", "DAM_2", false, 3, 0.7, 0], t6854:["Box", "DAM_2", false, 3, 0.7, 0], t6855:["Box", "DAM_2", false, 2.2, 1.2, 0], t6857:["Box", "DAM_2", false, 1.6, 1, 0], t6858:["Box", "DAM_2", false, 3, 1, 0], t6859:["Box", "DAM_2", false, 3, 1, 0], t6860:["Box", "DAM_2", false, 3, 1, 0], t6862:["Cone", "", false, 0.8, 0], t8350:["Garbage", "A", true, 1, 0], t8351:["Hydrant", "", true, 0.6, -0.6], t8361:["Hydrant", "", true, 0.6, 0.2], t8352:["Mailbox", "A", false, 0.6, 0], t8353:["Box", "DAM_2", false, 3, 0.7, 0], t8354:["Box", "DAM_2", false, 3, 0.7, 0], t8355:["Box", "DAM_2", false, 2.2, 1.2, 0], t8357:["Box", "DAM_2", false, 1.6, 1, 0], t8358:["Box", "DAM_2", false, 3, 1, 0], t8359:["Box", "DAM_2", false, 3, 1, 0], t8360:["Box", "DAM_2", false, 3, 1, 0], t9200:["Box", "DAM_5", false, 0.6, 1, -0.4], t9201:["Box", "DAM_5", false, 0.6, 1, -0.4], t9202:["Box", "DAM_5", false, 0.6, 1, -0.4], t9203:["Box", "DAM_5", false, 0.6, 1, -0.4], t9204:["Box", "DAM_5", false, 0.6, 1, -0.4], t9205:["Box", "DAM_5", false, 0.6, 1, -0.4], t9240:["Box", "DAM_5", false, 0.6, 1, -0.4], t9241:["Box", "DAM_5", false, 0.6, 1, -0.4], t9242:["Box", "DAM_5", false, 0.6, 1, -0.4], t9243:["Box", "DAM_5", false, 0.6, 1, -0.4], t9244:["Box", "DAM_5", false, 0.6, 1, -0.4], t9245:["Box", "DAM_5", false, 0.6, 1, -0.4], t9246:["Box", "DAM_5", false, 0.6, 1, -0.4], t9247:["Box", "DAM_5", false, 0.6, 1, -0.4], t9000:["ParkedCar", "Cop"], t9001:["ParkedCar", "Colt"], t9002:["ParkedCar", "Wagon"], t9003:["ParkedCar", "Bug"], t9004:["ParkedCar", "Goblin"], t9005:["ParkedCar", "Bummer"], t9006:["ParkedCar", "Jeep"], t9007:["ParkedCar", "Spunk"], t9051:["ParkedCar", "Colt"], t9052:["ParkedCar", "Wagon"], t9053:["ParkedCar", "Bug"], t9054:["ParkedCar", "Goblin"], t9055:["ParkedCar", "Bummer"], t9056:["ParkedCar", "Jeep"], t9057:["ParkedCar", "Spunk"], t9058:["ParkedCar", "Roadie"], t9071:["ParkedCar", "Colt"], t9072:["ParkedCar", "Wagon"], t9073:["ParkedCar", "Bug"], t9074:["ParkedCar", "Goblin"], t9075:["ParkedCar", "Bummer"], t9076:["ParkedCar", "Jeep"], t9077:["ParkedCar", "Spunk"], t9100:["ParkedCar", "Cop"], t9101:["ParkedCar", "Colt"], t9102:["ParkedCar", "Wagon"], t9153:["Circle", "", true, 1, 0], t9500:["Box", "ITM_Money", true, 1, 1, 0], t9501:["Box", "ITM_Feather", true, 1, 1, 0], t9502:["Box", "ITM_Record", true, 1, 1, 0], t9503:["Box", "ITM_Donut", true, 1, 1, 0], t9504:["Box", "ITM_Wallet", true, 1, 1, 0], t9505:["Box", "ITM_Magic1Brownie", true, 1, 1, 0], t9506:["Box", "ITM_Pair1of1Dice", true, 1, 1, 0], t9507:["Box", "ITM_Pill1Bottle", true, 1, 1, 0], t9508:["Box", "ITM_Teddy1Bear", true, 1, 1, 0], t9509:["Box", "ITM_Flower", true, 1, 1, 0], t9510:["Box", "ITM_Pair1of1Boots", true, 1, 1, 0], t9511:["Box", "ITM_Nitro", true, 1, 1, 0], t9512:["Box", "ITM_Briefcase", true, 1, 1, 0], t9513:["Box", "ITM_Camera", true, 1, 1, 0], t9514:["Box", "ITM_Purse", true, 1, 1, 0], t9515:["Box", "ITM_Lollipop", true, 1, 1, 0], t9516:["Box", "ITM_Goblet", true, 1, 1, 0], t9517:["Box", "ITM_Watch", true, 1, 1, 0], t9518:["Box", "ITM_Ring", true, 1, 1, 0], t9519:["Box", "ITM_Gold1Brick", true, 1, 1, 0], t9520:["Box", "ITM_Drums", true, 1, 1, 0], t9521:["Box", "ITM_Clock", true, 1, 1, 0]};
pos = {Sal:[181, 229, 3, 1, 0, "L", 184, 229, 3], Biff:[128, 208, 3, 0, 2, "R", 128, 212, 3], Fred:[225, 267, 3, 1, 0, "L", 228, 267, 3], Billy:[243, 228, 3, 1, 1, "L", 243, 230, 3], Giblet:[285, 187, 3, -1, 0, "R", 285, 189, 3], Oliver:[271, 267, 3, 2, 0, "L", 276, 268, 3], End:[187, 169, 3, 1, 0, "L", 187, 171, 3], Olga:[226, 177, 3, 1, 0, "L", 226, 179, 3], Marlin:[247, 242, 3, -1, 0, "R", 247, 244, 3], William:[291, 268, 3, -1, 0, "R", 287, 268, 3], Logan:[233, 261, 3, -1, 0, "R", 229, 262, 3], Tom:[225, 230, 3, -1, 0, "R", 223, 231, 3], Ducky:[223, 204, 3, -1, 0, "R", 223, 207, 3], Squid:[163, 219, 3, -1, 0, "R", 163, 221, 3], Gary:[147, 243, 3, 1, 0, "L", 147, 245, 3], Laura:[160, 0xFF, 3, -1, 0, "R", 159, 0x0101, 3], Mildred:[124, 254, 3, 1, 0, "L", 126, 0xFF, 3], Elanor:[132, 246, 3, -1, 0, "R", 131, 248, 3], Lance:[127, 108, 3, 1, 3, "L", 127, 113, 3], Henry:[250, 117, 3, -2, 2, "R", 246, 122, 3], Fidanka:[192, 72, 3, 0, 2, "L", 196, 73, 3], Ed:[112, 99, 3, -1, 2, "L", 112, 103, 3], Deon:[288, 104, 4, -1, 0, "R", 287, 106, 3], Peterson:[270, 68, 3, 0, 2, "R", 270, 73, 3], Edna:[289, 68, 3, 1, 3, "L", 289, 73, 3], Jack:[143, 69, 3, 3, 5, "L", 147, 75, 3], Jake:[248, 95, 3, 1, 0, "L", 251, 96, 3], Paul:[272, 114, 3, 1, 0, "L", 275, 116, 3], Mandy:[217, 135, 3, 1, 0, "L", 219, 137, 3], Dave:[199, 116, 3, -1, 0, "R", 196, 117, 3], Missy:[157, 135, 3, 1, 0, "L", 160, 137, 3], Mick:[123, 96, 3, -1, 0, "R", 119, 97, 3], Judy:[143, 111, 3, 1, 0, "L", 144, 113, 3], Rob:[180, 88, 3, -1, 0, "R", 177, 89, 3], XL3000:[100, 100, 3, 1, 0, "L", 100, 102, 3], Wendy:[47, 194, 3, -1, 2, "R", 44, 197, 3], Joey:[57, 243, 3, 1, 3, "L", 60, 247, 4], Phil:[128, 268, 3, -1, 1, "R", 125, 270, 3], Agnes:[92, 189, 3, -4, 0, "R", 88, 192, 3], Hector:[67, 194, 3, -1, 1, "R", 64, 196, 3], Sally:[26, 280, 3, 0, 5, "R", 25, 287, 3], Leroy:[101, 0x0101, 4, 1, 0, "L", 105, 0x0101, 4], Annie:[71, 261, 3, -1, 0, "R", 66, 261, 2], Thad:[89, 263, 3, 1, 0, "L", 91, 264, 3], Diana:[19, 0x0101, 3, -1, 0, "R", 19, 259, 3], Sean:[69, 244, 3, -1, 0, "R", 67, 245, 3], Matt:[91, 222, 3, 1, 0, "L", 91, 224, 3], Suzanne:[108, 210, 3, 1, 0, "L", 109, 212, 3], Dan:[60, 185, 3, -1, 0, "R", 58, 186, 3], Wally:[65, 216, 3, -1, 0, "R", 64, 218, 3], Carmen:[30, 188, 3, -1, 0, "R", 26, 188, 3], Rex:[30, 236, 3, 1, 0, "L", 33, 238, 3], Ralph:[83, 25, 4, 1, 0, "L", 85, 27, 3], Bill:[88, 97, 3, 1, 0, "L", 91, 98, 3], Frank:[66, 124, 3, 1, 0, "L", 69, 126, 3], Willie:[337, 220, 3, -1, 0, "R", 335, 221, 3], Blix:[366, 182, 3, 1, 1, "L", 368, 185, 3], Skip:[389, 219, 3, 0, 2, "L", 389, 224, 3], Eddie:[390, 288, 3, -1, 0, "R", 388, 289, 3], Susan:[341, 264, 3, 0, 4, "L", 341, 270, 3], Marvin:[365, 233, 3, 0, 4, "L", 364, 239, 3], Vito:[334, 165, 3, 2, 2, "L", 336, 168, 3], Hitop:[384, 154, 3, 1, 4, "R", 384, 163, 3], Candi:[329, 208, 3, 1, 2, "R", 330, 212, 3], Ruby:[308, 175, 3, 1, 0, "L", 309, 178, 3], Dahlia:[310, 210, 3, -1, 0, "R", 308, 212, 3], Steven:[388, 204, 3, -1, 0, "R", 388, 208, 3], Robin:[335, 175, 3, 1, 0, "L", 337, 176, 4], Tiffany:[370, 206, 3, -1, 0, "R", 368, 208, 3], Pookie:[335, 243, 3, -1, 0, "R", 336, 246, 3], Lizzie:[307, 242, 3, -1, 0, "R", 305, 246, 3], Miguel:[314, 260, 3, 1, 0, "L", 314, 262, 3], Mo:[322, 45, 3, -1, 2, "R", 320, 49, 3], Flip:[382, 69, 3, -2, 1, "R", 379, 71, 3], Todd:[312, 111, 3, -1, 2, "R", 312, 115, 3], Ray:[237, 74, 3, -1, 1, "R", 234, 76, 3], Raimy:[313, 95, 3, 1, 0, "L", 316, 95, 3], Earl:[376, 18, 3, 1, 0, "L", 376, 20, 3], Charlie:[370, 86, 3, -1, 0, "R", 368, 86, 3], Dale:[388, 132, 3, -5, 1, "R", 382, 135, 3], Vicky:[308, 27, 3, -1, 0, "R", 304, 29, 3], Belinda:[383, 33, 3, 1, 0, "L", 388, 33, 3], Gus:[363, 55, 3, 1, 0, "L", 363, 57, 3], Kenny:[382, 96, 3, 1, 0, "L", 384, 98, 3], Orville:[277, 135, 3, 1, 0, "L", 279, 137, 3], Moses:[316, 135, 3, 1, 0, "L", 316, 137, 3], Rosemary:[340, 103, 3, -1, 0, "R", 338, 105, 3], Rock:[377, 124, 3, 1, 0, "L", 380, 125, 3], Shaun:[308, 70, 3, -1, 0, "R", 303, 71, 3]};
fillers = {t1:[250, 251, 252, 253, 254, 309, 1750, 1751, 1752, 1753], t2:[4, 5, 100, 101, 102, 103, 104, 105, 106, 110, 114, 118, 122, 126, 130, 260, 264, 268, 272, 276, 310, 1600, 1601, 1602, 1603, 1610, 1614, 1618, 1622, 1760, 1764, 1768, 1772], t3:[6, 111, 115, 119, 123, 127, 131, 261, 265, 269, 273, 277, 311, 1611, 16154, 1619, 1623, 1761, 1765, 1769, 1773], t4:[7, 112, 116, 120, 124, 128, 132, 262, 266, 270, 274, 278, 312, 1612, 16155, 1620, 1624, 1762, 1766, 1770, 1774]};
ground = {Inter:[[9152, 9152]], Driveway:[[1, 7]], Pavement:[[10, 132], [1520, 1624], [3010, 3124], [4510, 4624], [6010, 6148], [7510, 7632]], Grass:[[150, 278], [1650, 1774], [3150, 3270], [4650, 4774], [6150, 6300], [7650, 7774]], Diag:[[452, 453], [456, 456], [460, 461], [464, 464], [1952, 1953], [1956, 1956], [1960, 1961], [1964, 1964], [3452, 3453], [3456, 3456], [3460, 3461], [3464, 3464], [4952, 4953], [4956, 4956], [4960, 4961], [4964, 4964], [6452, 6453], [6456, 6456], [6460, 6461], [6464, 6464], [7952, 7953], [7956, 7956], [7960, 7961], [7964, 7964]]};
super();
}
}
}//package game
Section 118
//Traffic (game.Traffic)
package game {
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import game.*;
class Traffic extends Vehicle {
var current:CheckPoint;
var colliding:Boolean;
var origSpeed:Number;
var collidingSpeed:Number;// = -1
var destination:CheckPoint;
var slowF:Number;// = 1
public var chasing:Boolean;// = false
var lastSharp:int;// = 0
var baseSpeed:Number;
var destroy:Boolean;// = false
function Traffic(_arg1:String, _arg2:String, _arg3:MovieClip, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:CheckPoint, _arg8:Boolean):void{
origSpeed = (_arg4 * rand2(0.85, 1.05));
baseSpeed = origSpeed;
_arg4 = origSpeed;
super(_arg1, _arg2, "", _arg3, origSpeed, _arg5, _arg6, 0, 1000, 0, _arg8);
onStreet = true;
current = _arg7;
destination = Game.checkPoints[("p" + current.out[int((Math.random() * current.out.length))])];
colliding = false;
}
function checkAngle(_arg1:Number){
}
override public function cleanUp(){
current = null;
destination = null;
super.cleanUp();
}
function rand(_arg1:int, _arg2:int):int{
return ((Math.round((Math.random() * (_arg2 - _arg1))) + _arg1));
}
public function initPos(_arg1, _arg2):void{
body.SetXForm(new b2Vec2(_arg1, _arg2), 0);
}
function rand2(_arg1:Number, _arg2:Number):Number{
return ((Math.round((((Math.random() * (_arg2 - _arg1)) + _arg1) * 1000)) / 1000));
}
public function behave():void{
var _local1:b2Vec2;
var _local2:*;
var _local3:*;
var _local4:Number;
var _local5:Number;
var _local6:int;
var _local7:b2Vec2;
var _local8:Array;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:b2Vec2;
var _local13:Number;
if (!destroy){
if ((this is Police)){
if ((this as Police).still){
return;
};
};
if (((colliding) && (!(inter)))){
collidingSpeed = ((collidingSpeed)>-1) ? collidingSpeed : 0;
maxSpeed = (maxSpeed + ((collidingSpeed - maxSpeed) / 5));
} else {
maxSpeed = (inter) ? (baseSpeed * (colliding) ? 1 : 0.66) : baseSpeed;
};
if (rand(0, 100) == 0){
baseSpeed = (baseSpeed * rand2(0.9, 1.1));
baseSpeed = Math.min(baseSpeed, (origSpeed * 1.1));
baseSpeed = Math.max(baseSpeed, (origSpeed * 0.9));
};
_local1 = new b2Vec2(0, 0);
_local2 = body.GetWorldCenter().x;
_local3 = body.GetWorldCenter().y;
if (destination == null){
destroy = true;
return;
};
_local4 = destination.center.x;
_local5 = destination.center.y;
if (Math.abs((_local4 - _local2)) > 1){
if (_local4 < _local2){
_local1.Add(new b2Vec2(-1, 0));
} else {
if (_local4 > _local2){
_local1.Add(new b2Vec2(1, 0));
};
};
};
if (Math.abs((_local5 - _local3)) > 1){
if (_local5 < _local3){
_local1.Add(new b2Vec2(0, -1));
} else {
if (_local5 > _local3){
_local1.Add(new b2Vec2(0, 1));
};
};
};
_local6 = ((ID == "POLICE")) ? 1 : 4;
if ((((Math.abs((_local4 - _local2)) < _local6)) && ((Math.abs((_local5 - _local3)) < _local6)))){
if (destination.out.length == 0){
if ((this is Police)){
if (ID == "POLICE"){
(this as Police).addCheckPoint(0);
} else {
(this as Police).endChase();
};
} else {
destroy = true;
};
return;
} else {
_local7 = new b2Vec2((_local4 - current.center.x), (_local5 - current.center.y));
_local7.Normalize();
current = destination;
_local8 = [];
_local9 = 0;
while (_local9 < current.out.length) {
_local11 = current.out[_local9];
_local12 = new b2Vec2((Game.checkPoints[("p" + _local11)].center.x - current.center.x), (Game.checkPoints[("p" + _local11)].center.y - current.center.y));
_local12.Normalize();
_local13 = (Math.acos(((_local7.x * _local12.x) + (_local7.y * _local12.y))) * RAD2DEG);
if ((((((_local13 < 100)) && (!((((_local13 > 75)) && (((lastSharp + 60) > Game.frame))))))) || ((((_local9 == (current.out.length - 1))) && ((_local8.length == 0)))))){
_local8.push([_local11, _local13]);
};
_local9++;
};
_local10 = int((Math.random() * _local8.length));
destination = Game.checkPoints[("p" + _local8[_local10][0])];
if (_local8[_local10][1] > 75){
lastSharp = Game.frame;
};
};
};
update(_local1);
colliding = false;
collidingSpeed = -1;
};
}
}
}//package game
Section 119
//Vehicle (game.Vehicle)
package game {
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import game.*;
class Vehicle extends GraphicalObject implements Movable {
const PI2:Number = 6.28318530717959;
const DEG2RAD:Number = 0.0174532925199433;
const DIAG:Number = 26.5;
const RAD2DEG:Number = 57.2957795130823;
var acceleration:Number;
var slow:Boolean;// = false
var heading:b2Vec2;
var mass:Number;
var ya:int;// = 0
var df:Boolean;// = false
var water:Boolean;// = false
var angles:Array;
var aa:Number;// = 0
var ac:int;// = 0
var origAccel:Number;
var brake:Boolean;// = false
var ohx:int;// = 0
var defense:Number;
var onStreet:Boolean;// = true
var maxSpeed:Number;
public var speed:Number;
var type:String;
var gasMax:Number;
var diagClose:Boolean;// = false
var ohy:int;// = 0
var angle:Number;// = 0
var impact:Number;// = 0
var inter:Boolean;// = false
var control:Boolean;// = true
var gas:Number;
var color:String;
var gasRate:Number;
var nitroC:int;// = 0
var oldA:Number;
function Vehicle(_arg1:String, _arg2:String, _arg3:String, _arg4:MovieClip, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Boolean):void{
angles = [];
super(_arg1, _arg4);
this.type = _arg2;
this.color = _arg3;
this.maxSpeed = _arg5;
this.mass = _arg6;
this.acceleration = _arg7;
this.gasMax = _arg9;
this.gasRate = _arg10;
this.defense = _arg8;
this.df = _arg11;
origAccel = _arg7;
gas = _arg9;
}
public function applyForce(_arg1:b2Vec2):void{
body.ApplyForce(_arg1, body.GetWorldCenter());
}
public function applyTorque(_arg1:Number):void{
body.ApplyTorque(_arg1);
}
public function applyImpulse(_arg1:b2Vec2):void{
body.ApplyImpulse(_arg1, body.GetWorldCenter());
}
public function update(_arg1:b2Vec2, _arg2:Boolean=false):void{
var _local8:Number;
var _local9:Number;
this.heading = _arg1;
if (nitroC > 0){
nitroC--;
acceleration = (origAccel * 1.75);
} else {
if (((!((_arg1.x == ohx))) || (!((_arg1.y == ohy))))){
aa = (aa - 1);
if (aa < 0){
aa = 0;
};
} else {
aa = (aa + 0.025);
if (aa > 15){
aa = 15;
};
};
if ((((_arg1.x == 0)) && ((_arg1.y == 0)))){
aa = 0;
};
acceleration = (origAccel + aa);
ohx = _arg1.x;
ohy = _arg1.y;
};
if (control){
if ((((_arg1.x == 1)) && ((_arg1.y == 0)))){
angle = 0;
};
if ((((_arg1.x == -1)) && ((_arg1.y == 0)))){
angle = Math.PI;
};
if ((((_arg1.x == 1)) && ((_arg1.y == 1)))){
angle = (DIAG * DEG2RAD);
};
if ((((_arg1.x == -1)) && ((_arg1.y == 1)))){
angle = ((180 - DIAG) * DEG2RAD);
};
if ((((_arg1.x == -1)) && ((_arg1.y == -1)))){
angle = ((180 + DIAG) * DEG2RAD);
};
if ((((_arg1.x == 1)) && ((_arg1.y == -1)))){
angle = ((360 - DIAG) * DEG2RAD);
};
if ((((_arg1.x == 0)) && ((_arg1.y == 1)))){
angle = (Math.PI / 2);
};
if ((((_arg1.x == 0)) && ((_arg1.y == -1)))){
angle = ((3 * Math.PI) / 2);
};
body.SetXForm(body.GetWorldCenter(), angle);
if (((!((_arg1.x == 0))) || (!((_arg1.y == 0))))){
applyForce(new b2Vec2((Math.cos(body.GetAngle()) * ((acceleration * maxSpeed) * (mass / 10))), (Math.sin(body.GetAngle()) * ((acceleration * maxSpeed) * (mass / 10)))));
};
} else {
brake = true;
};
var _local3:Number = 0.95;
if (slow){
_local3 = 0.94;
};
if (((brake) || (water))){
_local3 = 0.85;
aa = 0;
};
body.SetLinearVelocity(new b2Vec2((body.GetLinearVelocity().x * (df) ? 0.995 : _local3), (body.GetLinearVelocity().y * (df) ? 0.995 : _local3)));
speed = body.GetLinearVelocity().Normalize();
body.GetLinearVelocity().Multiply(Math.min(speed, maxSpeed));
graphic.x = (body.GetWorldCenter().x * Game.DRAW_SCALE);
graphic.y = ((body.GetWorldCenter().y * Game.DRAW_SCALE) + ya);
var _local4:Number = (angle * RAD2DEG);
var _local5:Number = _local4;
var _local6:Boolean;
var _local7:Boolean;
angles.push(_local4);
if (angles.length > 30){
angles.shift();
};
for each (_local8 in angles) {
if ((((_local8 == 0)) || ((_local8 == 180)))){
_local6 = true;
break;
};
};
for each (_local9 in angles) {
if ((((_local9 == 270)) || ((_local9 == 90)))){
_local7 = true;
break;
};
};
if (((((!(([26.5, 153.5, 206.5, 333.5].indexOf(_local4) == -1))) && (!(diagClose)))) && (onStreet))){
ac++;
if (ac > (_local6) ? 7 : 35){
_local5 = _local4;
} else {
_local5 = (_local7) ? Math.round(_local4) : (oldA) ? oldA : _local4;
};
} else {
ac = 0;
_local5 = _local4;
};
if (oldA != _local5){
graphic.gotoAndStop(("a" + _local5));
};
if ((this is Police)){
if (graphic.siren){
graphic.siren.visible = (this as Police).chasing;
};
};
oldA = _local5;
water = false;
}
override public function cleanUp(){
heading = null;
angles = null;
super.cleanUp();
}
}
}//package game
Section 120
//Agnes_A_258 (pizza_city_fla.Agnes_A_258)
package pizza_city_fla {
import flash.display.*;
public dynamic class Agnes_A_258 extends MovieClip {
public var char:MovieClip;
public function Agnes_A_258(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 121
//alertTextAnim_74 (pizza_city_fla.alertTextAnim_74)
package pizza_city_fla {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import flash.media.*;
import flash.system.*;
import flash.net.*;
import flash.text.*;
import flash.errors.*;
import flash.ui.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class alertTextAnim_74 extends MovieClip {
public var alertClip2:MovieClip;
public function alertTextAnim_74(){
addFrameScript(0, frame1, 189, frame190, 331, frame332);
}
function frame1(){
stop();
}
function frame332(){
(parent as MovieClip).endAlert();
}
function frame190(){
(parent as MovieClip).endAlert();
gotoAndStop(1);
}
}
}//package pizza_city_fla
Section 122
//Annie_A_251 (pizza_city_fla.Annie_A_251)
package pizza_city_fla {
import flash.display.*;
public dynamic class Annie_A_251 extends MovieClip {
public var char:MovieClip;
public function Annie_A_251(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 123
//AsPresents_107 (pizza_city_fla.AsPresents_107)
package pizza_city_fla {
import flash.display.*;
public dynamic class AsPresents_107 extends MovieClip {
public function AsPresents_107(){
addFrameScript(59, frame60);
}
function frame60(){
stop();
}
}
}//package pizza_city_fla
Section 124
//AudioVol_143 (pizza_city_fla.AudioVol_143)
package pizza_city_fla {
import flash.display.*;
public dynamic class AudioVol_143 extends MovieClip {
public function AudioVol_143(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 125
//Beach2_227 (pizza_city_fla.Beach2_227)
package pizza_city_fla {
import flash.display.*;
public dynamic class Beach2_227 extends MovieClip {
public function Beach2_227(){
addFrameScript(2229, frame2230);
}
function frame2230(){
stop();
}
}
}//package pizza_city_fla
Section 126
//Biff_214 (pizza_city_fla.Biff_214)
package pizza_city_fla {
import flash.display.*;
public dynamic class Biff_214 extends MovieClip {
public function Biff_214(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 127
//Biff_A_234 (pizza_city_fla.Biff_A_234)
package pizza_city_fla {
import flash.display.*;
public dynamic class Biff_A_234 extends MovieClip {
public var char:MovieClip;
public function Biff_A_234(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 128
//Billy_209 (pizza_city_fla.Billy_209)
package pizza_city_fla {
import flash.display.*;
public dynamic class Billy_209 extends MovieClip {
public function Billy_209(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 129
//Billy_A_232 (pizza_city_fla.Billy_A_232)
package pizza_city_fla {
import flash.display.*;
public dynamic class Billy_A_232 extends MovieClip {
public var char:MovieClip;
public function Billy_A_232(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 130
//blinker_159 (pizza_city_fla.blinker_159)
package pizza_city_fla {
import flash.display.*;
public dynamic class blinker_159 extends MovieClip {
public function blinker_159(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 131
//Blip_A_267 (pizza_city_fla.Blip_A_267)
package pizza_city_fla {
import flash.display.*;
public dynamic class Blip_A_267 extends MovieClip {
public var char:MovieClip;
public function Blip_A_267(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 132
//Blix_120 (pizza_city_fla.Blix_120)
package pizza_city_fla {
import flash.display.*;
public dynamic class Blix_120 extends MovieClip {
public function Blix_120(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 133
//Builder1_218 (pizza_city_fla.Builder1_218)
package pizza_city_fla {
import flash.display.*;
public dynamic class Builder1_218 extends MovieClip {
public function Builder1_218(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 134
//Builder2_220 (pizza_city_fla.Builder2_220)
package pizza_city_fla {
import flash.display.*;
public dynamic class Builder2_220 extends MovieClip {
public function Builder2_220(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 135
//Builder3_222 (pizza_city_fla.Builder3_222)
package pizza_city_fla {
import flash.display.*;
public dynamic class Builder3_222 extends MovieClip {
public function Builder3_222(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 136
//C1_121 (pizza_city_fla.C1_121)
package pizza_city_fla {
import flash.display.*;
public dynamic class C1_121 extends MovieClip {
public var c:BugBlue;
public function C1_121(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 137
//C10_132 (pizza_city_fla.C10_132)
package pizza_city_fla {
import flash.display.*;
public dynamic class C10_132 extends MovieClip {
public var c:JeepBrown;
public function C10_132(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 138
//C2_122 (pizza_city_fla.C2_122)
package pizza_city_fla {
import flash.display.*;
public dynamic class C2_122 extends MovieClip {
public var c:JeepYellow;
public function C2_122(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 139
//C3_123 (pizza_city_fla.C3_123)
package pizza_city_fla {
import flash.display.*;
public dynamic class C3_123 extends MovieClip {
public var c:Cop;
public function C3_123(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 140
//C4_124 (pizza_city_fla.C4_124)
package pizza_city_fla {
import flash.display.*;
public dynamic class C4_124 extends MovieClip {
public var c:ColtOrange;
public function C4_124(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 141
//C5_125 (pizza_city_fla.C5_125)
package pizza_city_fla {
import flash.display.*;
public dynamic class C5_125 extends MovieClip {
public var c:BummerGreen;
public function C5_125(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 142
//C6_134 (pizza_city_fla.C6_134)
package pizza_city_fla {
import flash.display.*;
public dynamic class C6_134 extends MovieClip {
public var c:SpunkPink;
public function C6_134(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 143
//C7_133 (pizza_city_fla.C7_133)
package pizza_city_fla {
import flash.display.*;
public dynamic class C7_133 extends MovieClip {
public var c:WagonPurple;
public function C7_133(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 144
//C8_130 (pizza_city_fla.C8_130)
package pizza_city_fla {
import flash.display.*;
public dynamic class C8_130 extends MovieClip {
public var c:GoblinBlue;
public function C8_130(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 145
//C9_131 (pizza_city_fla.C9_131)
package pizza_city_fla {
import flash.display.*;
public dynamic class C9_131 extends MovieClip {
public var c:ColtGreen;
public function C9_131(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
c.stop();
}
}
}//package pizza_city_fla
Section 146
//Candi_200 (pizza_city_fla.Candi_200)
package pizza_city_fla {
import flash.display.*;
public dynamic class Candi_200 extends MovieClip {
public function Candi_200(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 147
//Candi_A_265 (pizza_city_fla.Candi_A_265)
package pizza_city_fla {
import flash.display.*;
public dynamic class Candi_A_265 extends MovieClip {
public var char:MovieClip;
public function Candi_A_265(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 148
//createdBy_135 (pizza_city_fla.createdBy_135)
package pizza_city_fla {
import flash.display.*;
public dynamic class createdBy_135 extends MovieClip {
public function createdBy_135(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package pizza_city_fla
Section 149
//Dan_A_272 (pizza_city_fla.Dan_A_272)
package pizza_city_fla {
import flash.display.*;
public dynamic class Dan_A_272 extends MovieClip {
public var char:MovieClip;
public function Dan_A_272(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 150
//Dumpster_173 (pizza_city_fla.Dumpster_173)
package pizza_city_fla {
import flash.display.*;
public dynamic class Dumpster_173 extends MovieClip {
public function Dumpster_173(){
addFrameScript(0, frame1, 1, frame2, 160, frame161, 320, frame321, 480, frame481);
}
function frame481(){
gotoAndStop(1);
}
function frame1(){
stop();
}
function frame321(){
gotoAndStop(1);
}
function frame2(){
gotoAndPlay(("f" + int((Math.random() * 10))));
}
function frame161(){
gotoAndStop(1);
}
}
}//package pizza_city_fla
Section 151
//Ed_187 (pizza_city_fla.Ed_187)
package pizza_city_fla {
import flash.display.*;
public dynamic class Ed_187 extends MovieClip {
public function Ed_187(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 152
//Ed_A_247 (pizza_city_fla.Ed_A_247)
package pizza_city_fla {
import flash.display.*;
public dynamic class Ed_A_247 extends MovieClip {
public var char:MovieClip;
public function Ed_A_247(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 153
//Eddie_224 (pizza_city_fla.Eddie_224)
package pizza_city_fla {
import flash.display.*;
public dynamic class Eddie_224 extends MovieClip {
public function Eddie_224(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 154
//Edna_167 (pizza_city_fla.Edna_167)
package pizza_city_fla {
import flash.display.*;
public dynamic class Edna_167 extends MovieClip {
public function Edna_167(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 155
//Edna_A_166 (pizza_city_fla.Edna_A_166)
package pizza_city_fla {
import flash.display.*;
public dynamic class Edna_A_166 extends MovieClip {
public var char:MovieClip;
public function Edna_A_166(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 156
//End_202 (pizza_city_fla.End_202)
package pizza_city_fla {
import flash.display.*;
public dynamic class End_202 extends MovieClip {
public function End_202(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 157
//exitHL_100 (pizza_city_fla.exitHL_100)
package pizza_city_fla {
import flash.display.*;
public dynamic class exitHL_100 extends MovieClip {
public function exitHL_100(){
addFrameScript(0, frame1, 1, frame2, 19, frame20);
}
function frame20(){
gotoAndPlay(2);
}
function frame1(){
stop();
}
function frame2(){
play();
}
}
}//package pizza_city_fla
Section 158
//Fidanka_193 (pizza_city_fla.Fidanka_193)
package pizza_city_fla {
import flash.display.*;
public dynamic class Fidanka_193 extends MovieClip {
public function Fidanka_193(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 159
//Fidanka_A_248 (pizza_city_fla.Fidanka_A_248)
package pizza_city_fla {
import flash.display.*;
public dynamic class Fidanka_A_248 extends MovieClip {
public var char:MovieClip;
public function Fidanka_A_248(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 160
//FiredText_104 (pizza_city_fla.FiredText_104)
package pizza_city_fla {
import flash.display.*;
public dynamic class FiredText_104 extends MovieClip {
public function FiredText_104(){
addFrameScript(147, frame148, 296, frame297);
}
function frame148(){
stop();
}
function frame297(){
stop();
}
}
}//package pizza_city_fla
Section 161
//Flip_207 (pizza_city_fla.Flip_207)
package pizza_city_fla {
import flash.display.*;
public dynamic class Flip_207 extends MovieClip {
public function Flip_207(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 162
//Flip_A_262 (pizza_city_fla.Flip_A_262)
package pizza_city_fla {
import flash.display.*;
public dynamic class Flip_A_262 extends MovieClip {
public var char:MovieClip;
public function Flip_A_262(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 163
//Fred_183 (pizza_city_fla.Fred_183)
package pizza_city_fla {
import flash.display.*;
public dynamic class Fred_183 extends MovieClip {
public function Fred_183(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 164
//gas_80 (pizza_city_fla.gas_80)
package pizza_city_fla {
import flash.display.*;
public dynamic class gas_80 extends MovieClip {
public function gas_80(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 165
//Giblet_185 (pizza_city_fla.Giblet_185)
package pizza_city_fla {
import flash.display.*;
public dynamic class Giblet_185 extends MovieClip {
public function Giblet_185(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 166
//Giblet_A_233 (pizza_city_fla.Giblet_A_233)
package pizza_city_fla {
import flash.display.*;
public dynamic class Giblet_A_233 extends MovieClip {
public var char:MovieClip;
public function Giblet_A_233(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 167
//Hector_261 (pizza_city_fla.Hector_261)
package pizza_city_fla {
import flash.display.*;
public dynamic class Hector_261 extends MovieClip {
public function Hector_261(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 168
//Hector_A_260 (pizza_city_fla.Hector_A_260)
package pizza_city_fla {
import flash.display.*;
public dynamic class Hector_A_260 extends MovieClip {
public var char:MovieClip;
public function Hector_A_260(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 169
//Henry_213 (pizza_city_fla.Henry_213)
package pizza_city_fla {
import flash.display.*;
public dynamic class Henry_213 extends MovieClip {
public function Henry_213(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 170
//Henry_A_245 (pizza_city_fla.Henry_A_245)
package pizza_city_fla {
import flash.display.*;
public dynamic class Henry_A_245 extends MovieClip {
public var char:MovieClip;
public function Henry_A_245(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 171
//HiTop_195 (pizza_city_fla.HiTop_195)
package pizza_city_fla {
import flash.display.*;
public dynamic class HiTop_195 extends MovieClip {
public function HiTop_195(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 172
//HiTop_A_269 (pizza_city_fla.HiTop_A_269)
package pizza_city_fla {
import flash.display.*;
public dynamic class HiTop_A_269 extends MovieClip {
public var char:MovieClip;
public function HiTop_A_269(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 173
//Hydrant_180 (pizza_city_fla.Hydrant_180)
package pizza_city_fla {
import flash.display.*;
public dynamic class Hydrant_180 extends MovieClip {
public function Hydrant_180(){
addFrameScript(0, frame1, 1, frame2, 28, frame29);
}
function frame29(){
gotoAndPlay(14);
}
function frame1(){
stop();
}
function frame2(){
play();
}
}
}//package pizza_city_fla
Section 174
//Hydrant4_172 (pizza_city_fla.Hydrant4_172)
package pizza_city_fla {
import flash.display.*;
public dynamic class Hydrant4_172 extends MovieClip {
public function Hydrant4_172(){
addFrameScript(0, frame1, 1, frame2, 28, frame29);
}
function frame29(){
gotoAndPlay(14);
}
function frame1(){
stop();
}
function frame2(){
play();
}
}
}//package pizza_city_fla
Section 175
//InterX_142 (pizza_city_fla.InterX_142)
package pizza_city_fla {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import flash.media.*;
import flash.system.*;
import flash.net.*;
import flash.text.*;
import flash.errors.*;
import flash.ui.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class InterX_142 extends MovieClip {
public var bt_next:SimpleButton;
public var loadSaved:MovieClip;
public var sfx:MovieClip;
public var blinker:MovieClip;
public var bt_close:SimpleButton;
public var pass:TextField;
public var savedInfo:TextField;
public var currentMods:TextField;
public var btn_music:SimpleButton;
public var bt_loadSaved1:SimpleButton;
public var bt_loadSaved2:SimpleButton;
public var bt_loadSaved3:SimpleButton;
public var music:MovieClip;
public var bt_startNew1:SimpleButton;
public var bt_startNew2:SimpleButton;
public var bt_startNew3:SimpleButton;
public var bt_removeMods:SimpleButton;
public var btn_sfx:SimpleButton;
public var bt_back:SimpleButton;
public function InterX_142(){
addFrameScript(0, frame1, 9, frame10, 19, frame20, 20, frame21, 21, frame22, 29, frame30);
}
function frame10(){
stop();
(parent as MovieClip).initOptions();
}
function frame1(){
stop();
}
function frame20(){
stop();
(parent as MovieClip).initInstr();
bt_back.visible = false;
bt_next.visible = true;
}
function frame22(){
stop();
bt_back.visible = true;
bt_next.visible = false;
}
function frame21(){
stop();
bt_back.visible = true;
bt_next.visible = true;
}
function frame30(){
stop();
(parent as MovieClip).initStart();
}
}
}//package pizza_city_fla
Section 176
//items_66 (pizza_city_fla.items_66)
package pizza_city_fla {
import flash.display.*;
public dynamic class items_66 extends MovieClip {
public function items_66(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 177
//Jack_203 (pizza_city_fla.Jack_203)
package pizza_city_fla {
import flash.display.*;
public dynamic class Jack_203 extends MovieClip {
public function Jack_203(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 178
//Jack_A_242 (pizza_city_fla.Jack_A_242)
package pizza_city_fla {
import flash.display.*;
public dynamic class Jack_A_242 extends MovieClip {
public var char:MovieClip;
public function Jack_A_242(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 179
//Jenny_204 (pizza_city_fla.Jenny_204)
package pizza_city_fla {
import flash.display.*;
public dynamic class Jenny_204 extends MovieClip {
public function Jenny_204(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 180
//Joey_197 (pizza_city_fla.Joey_197)
package pizza_city_fla {
import flash.display.*;
public dynamic class Joey_197 extends MovieClip {
public function Joey_197(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 181
//Joey_A_256 (pizza_city_fla.Joey_A_256)
package pizza_city_fla {
import flash.display.*;
public dynamic class Joey_A_256 extends MovieClip {
public var char:MovieClip;
public function Joey_A_256(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 182
//Kenny_198 (pizza_city_fla.Kenny_198)
package pizza_city_fla {
import flash.display.*;
public dynamic class Kenny_198 extends MovieClip {
public function Kenny_198(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 183
//Lance_244 (pizza_city_fla.Lance_244)
package pizza_city_fla {
import flash.display.*;
public dynamic class Lance_244 extends MovieClip {
public function Lance_244(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 184
//Lance_A_243 (pizza_city_fla.Lance_A_243)
package pizza_city_fla {
import flash.display.*;
public dynamic class Lance_A_243 extends MovieClip {
public var char:MovieClip;
public function Lance_A_243(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 185
//Leroy_194 (pizza_city_fla.Leroy_194)
package pizza_city_fla {
import flash.display.*;
public dynamic class Leroy_194 extends MovieClip {
public function Leroy_194(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 186
//loadScreen_1 (pizza_city_fla.loadScreen_1)
package pizza_city_fla {
import flash.display.*;
public dynamic class loadScreen_1 extends MovieClip {
public function loadScreen_1(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 187
//Madison_199 (pizza_city_fla.Madison_199)
package pizza_city_fla {
import flash.display.*;
public dynamic class Madison_199 extends MovieClip {
public function Madison_199(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 188
//MainTimeline (pizza_city_fla.MainTimeline)
package pizza_city_fla {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import com.kongregate.as3.client.*;
import game.*;
import Preroll.*;
import flash.geom.*;
import flash.media.*;
import flash.system.*;
import flash.net.*;
import flash.text.*;
import flash.errors.*;
import flash.ui.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.external.*;
import flash.filters.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public var loadScreen:MovieClip;
public var logo;
public var oStage:Object;
public var pizzaGame:Game;
public var kong:KongregateAPI;
public var preroll:Preroller;
public var playClip;
public var go:Boolean;
public var conn:LocalConnection;
public var oRoot:Object;
public var re:RegExp;
public var bytestotal:Number;
public function MainTimeline(){
addFrameScript(0, frame1, 9, frame10);
}
function frame1(){
stop();
bytestotal = stage.loaderInfo.bytesTotal;
addEventListener(Event.ENTER_FRAME, loading);
go = false;
GlobalVarContainer.vars.stage = this;
GlobalVarContainer.vars.root = root;
GlobalVarContainer.vars.gameName = "pizzacity";
logo = new mc_preroll_logo();
playClip = new mc_preroll_play();
GlobalVarContainer.vars.mcLogo = logo;
GlobalVarContainer.vars.mcPlay = playClip;
re = new RegExp("http://i.cdn.turner.com/adultswim/games/game/tools/swf/wsg-(\\d+)x(\\d+).flv", "i");
GlobalVarContainer.vars.flvPath = "http://i.cdn.turner.com/adultswim/games/game/tools/swf/wsg-700x500.flv";
GlobalVarContainer.vars.flvWidth = parseInt(GlobalVarContainer.vars.flvPath.replace(re, "$1"));
GlobalVarContainer.vars.flvHeight = parseInt(GlobalVarContainer.vars.flvPath.replace(re, "$2"));
GlobalVarContainer.vars.stageWidth = 700;
GlobalVarContainer.vars.stageHeight = 600;
kong = new KongregateAPI();
this.addChild(kong);
preroll = new Preroller();
this.addChild(preroll);
}
function frame10(){
stop();
pizzaGame = new Game(kong);
addChild(pizzaGame);
conn = new LocalConnection();
pizzaGame.init(conn.domain);
}
public function loading(_arg1:Event){
var _local2:Number = stage.loaderInfo.bytesLoaded;
var _local3:int = Math.round(((_local2 * 100) / bytestotal));
loadScreen.gotoAndStop(_local3);
if ((((_local2 >= bytestotal)) && (go))){
removeEventListener(Event.ENTER_FRAME, loading);
gotoAndStop(10);
};
}
}
}//package pizza_city_fla
Section 189
//Marvin_189 (pizza_city_fla.Marvin_189)
package pizza_city_fla {
import flash.display.*;
public dynamic class Marvin_189 extends MovieClip {
public function Marvin_189(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 190
//Marvin_A_268 (pizza_city_fla.Marvin_A_268)
package pizza_city_fla {
import flash.display.*;
public dynamic class Marvin_A_268 extends MovieClip {
public var char:MovieClip;
public function Marvin_A_268(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 191
//Mary_216 (pizza_city_fla.Mary_216)
package pizza_city_fla {
import flash.display.*;
public dynamic class Mary_216 extends MovieClip {
public function Mary_216(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 192
//Mo_179 (pizza_city_fla.Mo_179)
package pizza_city_fla {
import flash.display.*;
public dynamic class Mo_179 extends MovieClip {
public function Mo_179(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 193
//Mo_A_178 (pizza_city_fla.Mo_A_178)
package pizza_city_fla {
import flash.display.*;
public dynamic class Mo_A_178 extends MovieClip {
public var char:MovieClip;
public function Mo_A_178(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 194
//Nurse1_212 (pizza_city_fla.Nurse1_212)
package pizza_city_fla {
import flash.display.*;
public dynamic class Nurse1_212 extends MovieClip {
public function Nurse1_212(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 195
//Old3_190 (pizza_city_fla.Old3_190)
package pizza_city_fla {
import flash.display.*;
public dynamic class Old3_190 extends MovieClip {
public function Old3_190(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 196
//Old5_191 (pizza_city_fla.Old5_191)
package pizza_city_fla {
import flash.display.*;
public dynamic class Old5_191 extends MovieClip {
public function Old5_191(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 197
//Olga_192 (pizza_city_fla.Olga_192)
package pizza_city_fla {
import flash.display.*;
public dynamic class Olga_192 extends MovieClip {
public function Olga_192(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 198
//Olga_A_253 (pizza_city_fla.Olga_A_253)
package pizza_city_fla {
import flash.display.*;
public dynamic class Olga_A_253 extends MovieClip {
public var char:MovieClip;
public function Olga_A_253(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 199
//Oliver_177 (pizza_city_fla.Oliver_177)
package pizza_city_fla {
import flash.display.*;
public dynamic class Oliver_177 extends MovieClip {
public function Oliver_177(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 200
//Oliver_A_176 (pizza_city_fla.Oliver_A_176)
package pizza_city_fla {
import flash.display.*;
public dynamic class Oliver_A_176 extends MovieClip {
public var char:MovieClip;
public function Oliver_A_176(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 201
//Orderly1_210 (pizza_city_fla.Orderly1_210)
package pizza_city_fla {
import flash.display.*;
public dynamic class Orderly1_210 extends MovieClip {
public function Orderly1_210(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 202
//Orderly2_211 (pizza_city_fla.Orderly2_211)
package pizza_city_fla {
import flash.display.*;
public dynamic class Orderly2_211 extends MovieClip {
public function Orderly2_211(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 203
//Peterson_112 (pizza_city_fla.Peterson_112)
package pizza_city_fla {
import flash.display.*;
public dynamic class Peterson_112 extends MovieClip {
public function Peterson_112(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 204
//Peterson_A_246 (pizza_city_fla.Peterson_A_246)
package pizza_city_fla {
import flash.display.*;
public dynamic class Peterson_A_246 extends MovieClip {
public var char:MovieClip;
public function Peterson_A_246(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 205
//Phil_188 (pizza_city_fla.Phil_188)
package pizza_city_fla {
import flash.display.*;
public dynamic class Phil_188 extends MovieClip {
public function Phil_188(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 206
//Phil_A_257 (pizza_city_fla.Phil_A_257)
package pizza_city_fla {
import flash.display.*;
public dynamic class Phil_A_257 extends MovieClip {
public var char:MovieClip;
public function Phil_A_257(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 207
//Pimp_184 (pizza_city_fla.Pimp_184)
package pizza_city_fla {
import flash.display.*;
public dynamic class Pimp_184 extends MovieClip {
public function Pimp_184(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 208
//pizzaBoy2_117 (pizza_city_fla.pizzaBoy2_117)
package pizza_city_fla {
import flash.display.*;
public dynamic class pizzaBoy2_117 extends MovieClip {
public var pizzas:MovieClip;
public function pizzaBoy2_117(){
addFrameScript(9, frame10);
}
function frame10(){
gotoAndPlay("L");
}
}
}//package pizza_city_fla
Section 209
//pizzas_65 (pizza_city_fla.pizzas_65)
package pizza_city_fla {
import flash.display.*;
public dynamic class pizzas_65 extends MovieClip {
public function pizzas_65(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 210
//Raimy_196 (pizza_city_fla.Raimy_196)
package pizza_city_fla {
import flash.display.*;
public dynamic class Raimy_196 extends MovieClip {
public function Raimy_196(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 211
//Ralph_205 (pizza_city_fla.Ralph_205)
package pizza_city_fla {
import flash.display.*;
public dynamic class Ralph_205 extends MovieClip {
public function Ralph_205(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 212
//Ray_171 (pizza_city_fla.Ray_171)
package pizza_city_fla {
import flash.display.*;
public dynamic class Ray_171 extends MovieClip {
public function Ray_171(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 213
//Ray_A_170 (pizza_city_fla.Ray_A_170)
package pizza_city_fla {
import flash.display.*;
public dynamic class Ray_A_170 extends MovieClip {
public var char:MovieClip;
public function Ray_A_170(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 214
//Sal_153 (pizza_city_fla.Sal_153)
package pizza_city_fla {
import flash.display.*;
public dynamic class Sal_153 extends MovieClip {
public function Sal_153(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 215
//Sally_A_168 (pizza_city_fla.Sally_A_168)
package pizza_city_fla {
import flash.display.*;
public dynamic class Sally_A_168 extends MovieClip {
public var char:MovieClip;
public function Sally_A_168(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 216
//saveMessage_91 (pizza_city_fla.saveMessage_91)
package pizza_city_fla {
import flash.display.*;
public dynamic class saveMessage_91 extends MovieClip {
public function saveMessage_91(){
addFrameScript(0, frame1, 39, frame40, 49, frame50, 147, frame148);
}
function frame50(){
play();
}
function frame40(){
stop();
}
function frame1(){
play();
}
function frame148(){
stop();
}
}
}//package pizza_city_fla
Section 217
//sec_82 (pizza_city_fla.sec_82)
package pizza_city_fla {
import flash.display.*;
public dynamic class sec_82 extends MovieClip {
public function sec_82(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 218
//sfxLoader_299 (pizza_city_fla.sfxLoader_299)
package pizza_city_fla {
import flash.display.*;
public dynamic class sfxLoader_299 extends MovieClip {
public function sfxLoader_299(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 219
//Skip_208 (pizza_city_fla.Skip_208)
package pizza_city_fla {
import flash.display.*;
public dynamic class Skip_208 extends MovieClip {
public function Skip_208(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 220
//Skip_A_266 (pizza_city_fla.Skip_A_266)
package pizza_city_fla {
import flash.display.*;
public dynamic class Skip_A_266 extends MovieClip {
public var char:MovieClip;
public function Skip_A_266(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 221
//Susan_275 (pizza_city_fla.Susan_275)
package pizza_city_fla {
import flash.display.*;
public dynamic class Susan_275 extends MovieClip {
public function Susan_275(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 222
//Susan_A_274 (pizza_city_fla.Susan_A_274)
package pizza_city_fla {
import flash.display.*;
public dynamic class Susan_A_274 extends MovieClip {
public var char:MovieClip;
public function Susan_A_274(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 223
//Thug_186 (pizza_city_fla.Thug_186)
package pizza_city_fla {
import flash.display.*;
public dynamic class Thug_186 extends MovieClip {
public function Thug_186(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 224
//Todd_165 (pizza_city_fla.Todd_165)
package pizza_city_fla {
import flash.display.*;
public dynamic class Todd_165 extends MovieClip {
public function Todd_165(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 225
//Todd_A_164 (pizza_city_fla.Todd_A_164)
package pizza_city_fla {
import flash.display.*;
public dynamic class Todd_A_164 extends MovieClip {
public var char:MovieClip;
public function Todd_A_164(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 226
//Tony_113 (pizza_city_fla.Tony_113)
package pizza_city_fla {
import flash.display.*;
public dynamic class Tony_113 extends MovieClip {
public function Tony_113(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 227
//tony_85 (pizza_city_fla.tony_85)
package pizza_city_fla {
import flash.display.*;
public dynamic class tony_85 extends MovieClip {
public function tony_85(){
addFrameScript(0, frame1, 13, frame14, 30, frame31, 48, frame49, 69, frame70, 85, frame86, 103, frame104, 136, frame137, 146, frame147, 160, frame161, 182, frame183, 206, frame207);
}
function frame1(){
play();
}
function frame70(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
function frame147(){
gotoAndPlay("explain");
}
function frame104(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
function frame86(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
function frame207(){
stop();
}
function frame161(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
function frame137(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
function frame14(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
function frame49(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
function frame31(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
function frame183(){
if (Math.random() < 0.95){
gotoAndPlay((this.currentFrame - 5));
};
}
}
}//package pizza_city_fla
Section 228
//tped1_114 (pizza_city_fla.tped1_114)
package pizza_city_fla {
import flash.display.*;
public dynamic class tped1_114 extends MovieClip {
public var pd1:Clown;
public function tped1_114(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 229
//tped2_118 (pizza_city_fla.tped2_118)
package pizza_city_fla {
import flash.display.*;
public dynamic class tped2_118 extends MovieClip {
public var pd1:Male_Greaser;
public function tped2_118(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 230
//tped3_116 (pizza_city_fla.tped3_116)
package pizza_city_fla {
import flash.display.*;
public dynamic class tped3_116 extends MovieClip {
public var pd1:MovieClip;
public function tped3_116(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 231
//Wendy_A_254 (pizza_city_fla.Wendy_A_254)
package pizza_city_fla {
import flash.display.*;
public dynamic class Wendy_A_254 extends MovieClip {
public var char:MovieClip;
public function Wendy_A_254(){
addFrameScript(0, frame1, 4, frame5, 19, frame20, 147, frame148);
}
function frame1(){
stop();
}
function frame5(){
stop();
}
function frame20(){
play();
}
function frame148(){
gotoAndStop("appear");
}
}
}//package pizza_city_fla
Section 232
//Vito_271 (pizza_city_fla.Vito_271)
package pizza_city_fla {
import flash.display.*;
public dynamic class Vito_271 extends MovieClip {
public function Vito_271(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 233
//Vito_A_270 (pizza_city_fla.Vito_A_270)
package pizza_city_fla {
import flash.display.*;
public dynamic class Vito_A_270 extends MovieClip {
public var char:MovieClip;
public function Vito_A_270(){
addFrameScript(0, frame1, 4, frame5);
}
function frame5(){
stop();
}
function frame1(){
stop();
}
}
}//package pizza_city_fla
Section 234
//ClickHandler (Preroll.ClickHandler)
package Preroll {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public class ClickHandler extends Sprite {
private var stream:Object;
private var mcLogo:Object;
private var blackBg:Object;
private var stageHeight:Number;
private var stageWidth:Number;
private var mcPlay:Object;
private var oStage:Object;
private var oRoot:Object;
private var strDomain:String;
private var video:Object;
private var gameName:String;
public function ClickHandler(){
mcPlay = GlobalVarContainer.vars.mcPlay;
mcLogo = GlobalVarContainer.vars.mcLogo;
oStage = GlobalVarContainer.vars.stage;
oRoot = GlobalVarContainer.vars.root;
stageWidth = GlobalVarContainer.vars.stageWidth;
stageHeight = GlobalVarContainer.vars.stageHeight;
stream = GlobalVarContainer.vars.stream;
video = GlobalVarContainer.vars.video;
blackBg = GlobalVarContainer.vars.blackBg;
gameName = GlobalVarContainer.vars.gameName;
strDomain = GlobalVarContainer.vars.strDomain;
super();
trace("ClickHandler initiated");
oStage.addEventListener(MouseEvent.CLICK, clickHandler);
}
private function clickHandler(_arg1:MouseEvent):void{
switch (true){
case mcPlay.hitTestPoint(oStage.mouseX, oStage.mouseY, true):
trace("mcPlay", this, this["parent"]);
oStage.removeChild(mcPlay);
oStage.removeChild(mcLogo);
oStage.removeChild(video);
oStage.removeChild(blackBg);
oStage.removeEventListener(MouseEvent.CLICK, clickHandler);
oRoot.go = true;
break;
case mcLogo.hitTestPoint(oStage.mouseX, oStage.mouseY, true):
goToURL(true);
trace("mcLogo");
break;
default:
goToURL(GlobalVarContainer.vars.bReady);
trace("clickHandler activated");
break;
};
GlobalVarContainer.vars.stream.resume();
}
private function goToURL(_arg1:Boolean=false):void{
var _local2 = "http://games.adultswim.com";
var _local3 = "";
switch (_arg1){
case true:
_local3 = "_end";
break;
default:
break;
};
var _local4:URLVariables = new URLVariables();
_local4.cid = ((((("GAME_Ext_" + gameName) + "_") + strDomain) + "_preroll") + _local3);
trace("variables.cid", _local4.cid);
var _local5:URLRequest = new URLRequest(_local2);
_local5.data = _local4;
navigateToURL(_local5, "_blank");
}
}
}//package Preroll
Section 235
//GetVars (Preroll.GetVars)
package Preroll {
import flash.display.*;
import flash.net.*;
public class GetVars extends Sprite {
private var oRoot:Object;
private var my_lc:LocalConnection;
public function GetVars(){
oRoot = GlobalVarContainer.vars.root;
my_lc = new LocalConnection();
super();
trace("~~~~", oRoot, GlobalVarContainer.vars.strBase);
switch (oRoot.loaderInfo.parameters.strBase){
case undefined:
case null:
case "":
GlobalVarContainer.vars.strBase = (("http://i.cdn.turner.com/adultswim/games/hs/" + GlobalVarContainer.vars.gameName) + "/");
break;
default:
try {
GlobalVarContainer.vars.strBase = oRoot.loaderInfo.parameters.strBase;
} catch(e:Error) {
};
break;
};
switch (oRoot.loaderInfo.parameters.strDomain){
case undefined:
case null:
case "":
GlobalVarContainer.vars.strDomain = my_lc.domain;
break;
default:
try {
GlobalVarContainer.vars.strDomain = oRoot.loaderInfo.parameters.strDomain;
} catch(e:Error) {
};
break;
};
}
}
}//package Preroll
Section 236
//GlobalVarContainer (Preroll.GlobalVarContainer)
package Preroll {
public class GlobalVarContainer {
public static var vars:Object = [];
}
}//package Preroll
Section 237
//Navigation (Preroll.Navigation)
package Preroll {
import flash.events.*;
import flash.display.*;
public class Navigation extends Sprite {
private var stream:Object;
private var mcLogo:Object;
private var stageHeight:Number;
private var stageWidth:Number;
private var oStage:Object;
private var mcPlay:Object;
public function Navigation(){
mcPlay = GlobalVarContainer.vars.mcPlay;
mcLogo = GlobalVarContainer.vars.mcLogo;
oStage = GlobalVarContainer.vars.stage;
stageWidth = GlobalVarContainer.vars.stageWidth;
stageHeight = GlobalVarContainer.vars.stageHeight;
stream = GlobalVarContainer.vars.stream;
super();
trace("Navigation initiated");
mcPlay.x = ((stageWidth / 2) - (mcPlay.width / 2));
mcLogo.x = ((stageWidth / 2) - (mcLogo.width / 2));
mcPlay.y = ((stageHeight / 2) - (mcPlay.height / 2));
mcLogo.y = (mcPlay.y - 70);
mcPlay.buttonMode = true;
mcLogo.buttonMode = true;
oStage.addChild(mcPlay);
oStage.addChild(mcLogo);
mcPlay.addEventListener(MouseEvent.MOUSE_OVER, mouseover);
mcPlay.addEventListener(MouseEvent.MOUSE_OUT, mouseout);
mcLogo.addEventListener(MouseEvent.MOUSE_OVER, mouseover);
mcLogo.addEventListener(MouseEvent.MOUSE_OUT, mouseout);
}
private function mouseout(_arg1:MouseEvent):void{
_arg1.target.gotoAndPlay(1);
}
private function mouseover(_arg1:MouseEvent):void{
_arg1.target.gotoAndPlay(2);
}
}
}//package Preroll
Section 238
//NetStreamer (Preroll.NetStreamer)
package Preroll {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.net.*;
public class NetStreamer extends Sprite {
public var nav:Navigation;
private var stageHeight:Number;// = 600
private var stream:NetStream;
private var stageWidth:Number;// = 700
private var connection:NetConnection;
private var oStage:Object;
private var oVideo:Object;
private var videoURL:String;
private var flvWidth:Number;
private var flvHeight:Number;
public function NetStreamer(){
flvHeight = GlobalVarContainer.vars.flvHeight;
flvWidth = GlobalVarContainer.vars.flvWidth;
oStage = GlobalVarContainer.vars.stage;
videoURL = GlobalVarContainer.vars.flvPath;
super();
trace(0, videoURL, GlobalVarContainer);
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect(null);
}
private function securityErrorHandler(_arg1:SecurityErrorEvent):void{
trace(("securityErrorHandler: " + _arg1));
}
private function connectStream():void{
stream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.client = new CustomClient();
var _local1:Sprite = new Sprite();
_local1.graphics.beginFill(0);
_local1.graphics.drawRect(0, 0, stageWidth, stageHeight);
oStage.addChild(_local1);
GlobalVarContainer.vars.blackBg = _local1;
var _local2:Video = new Video();
GlobalVarContainer.vars.video = _local2;
trace(((("!!!!!!!! width: " + flvWidth) + " : ") + flvHeight));
_local2.x = ((stageWidth - flvWidth) / 2);
_local2.y = ((stageHeight - flvHeight) / 2);
_local2.width = flvWidth;
_local2.height = flvHeight;
_local2.attachNetStream(stream);
stream.play(videoURL);
GlobalVarContainer.vars.stream = stream;
oStage.addChild(_local2);
var _local3:MovieClip = new MovieClip();
}
private function netStatusHandler(_arg1:NetStatusEvent):void{
switch (_arg1.info.code){
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
trace(("Stream not found: " + videoURL));
break;
case "NetStream.Play.Stop":
trace("All Stop, Aye");
GlobalVarContainer.vars.bReady = true;
nav = new Navigation();
break;
default:
break;
};
}
}
}//package Preroll
class CustomClient {
private function CustomClient(){
}
public function onCuePoint(_arg1:Object):void{
trace(((((("cuepoint: time=" + _arg1.time) + " name=") + _arg1.name) + " type=") + _arg1.type));
}
public function onXMPData(_arg1:Object):void{
}
public function onMetaData(_arg1:Object):void{
trace(((((((("metadata: duration=" + _arg1.duration) + " width=") + _arg1.width) + " height=") + _arg1.height) + " framerate=") + _arg1.framerate));
}
}
Section 239
//Preroller (Preroll.Preroller)
package Preroll {
import flash.display.*;
import flash.net.*;
public class Preroller extends Sprite {
private var clickHandler:ClickHandler;
private var myVid:NetStreamer;
private var oStage:Object;
private var oRoot:Object;
private var my_lc:LocalConnection;
private var getVars:GetVars;
public function Preroller(){
my_lc = new LocalConnection();
super();
trace("!@", my_lc.domain);
switch (stage){
case null:
case undefined:
case "":
oStage = GlobalVarContainer.vars.stage;
trace("@@@@stage is null. Now set to object: ", oStage);
break;
default:
oStage = stage;
trace("@@@@stage is available!");
break;
};
switch (root){
case null:
case undefined:
case "":
oRoot = GlobalVarContainer.vars.root;
trace("####root is null. Now set to object: ", oStage);
break;
default:
oRoot = root;
trace("####root is available!");
break;
};
trace("$$$$jumbotron", oStage, oRoot, "::", GlobalVarContainer.vars.root);
getVars = new GetVars();
myVid = new NetStreamer();
clickHandler = new ClickHandler();
}
}
}//package Preroll
Section 240
//accept1 (accept1)
package {
import flash.media.*;
public dynamic class accept1 extends Sound {
}
}//package
Section 241
//BugBlue (BugBlue)
package {
import flash.display.*;
public dynamic class BugBlue extends MovieClip {
}
}//package
Section 242
//BugGreen (BugGreen)
package {
import flash.display.*;
public dynamic class BugGreen extends MovieClip {
}
}//package
Section 243
//BugGrey (BugGrey)
package {
import flash.display.*;
public dynamic class BugGrey extends MovieClip {
}
}//package
Section 244
//BugPink (BugPink)
package {
import flash.display.*;
public dynamic class BugPink extends MovieClip {
}
}//package
Section 245
//BugRed (BugRed)
package {
import flash.display.*;
public dynamic class BugRed extends MovieClip {
}
}//package
Section 246
//BugWhite (BugWhite)
package {
import flash.display.*;
public dynamic class BugWhite extends MovieClip {
}
}//package
Section 247
//BugYellow (BugYellow)
package {
import flash.display.*;
public dynamic class BugYellow extends MovieClip {
}
}//package
Section 248
//BummerBlue (BummerBlue)
package {
import flash.display.*;
public dynamic class BummerBlue extends MovieClip {
}
}//package
Section 249
//BummerGreen (BummerGreen)
package {
import flash.display.*;
public dynamic class BummerGreen extends MovieClip {
}
}//package
Section 250
//BummerGrey (BummerGrey)
package {
import flash.display.*;
public dynamic class BummerGrey extends MovieClip {
}
}//package
Section 251
//BummerGrey2 (BummerGrey2)
package {
import flash.display.*;
public dynamic class BummerGrey2 extends MovieClip {
}
}//package
Section 252
//BummerMustard (BummerMustard)
package {
import flash.display.*;
public dynamic class BummerMustard extends MovieClip {
}
}//package
Section 253
//BummerOlive (BummerOlive)
package {
import flash.display.*;
public dynamic class BummerOlive extends MovieClip {
}
}//package
Section 254
//BummerOrange (BummerOrange)
package {
import flash.display.*;
public dynamic class BummerOrange extends MovieClip {
}
}//package
Section 255
//CarButton (CarButton)
package {
import flash.display.*;
public dynamic class CarButton extends SimpleButton {
}
}//package
Section 256
//carDot2 (carDot2)
package {
import flash.display.*;
public dynamic class carDot2 extends MovieClip {
}
}//package
Section 257
//CarSelect (CarSelect)
package {
import flash.display.*;
import flash.text.*;
public dynamic class CarSelect extends MovieClip {
public var rate:MovieClip;
public var cap:TextField;
public var speed:MovieClip;
public var gas:MovieClip;
public var cost:TextField;
public var safety:MovieClip;
}
}//package
Section 258
//CarSelect2 (CarSelect2)
package {
import flash.display.*;
import flash.text.*;
public dynamic class CarSelect2 extends MovieClip {
public var rate:MovieClip;
public var cap:TextField;
public var speed:MovieClip;
public var gas:MovieClip;
public var safety:MovieClip;
public var nam:TextField;
}
}//package
Section 259
//Clown (Clown)
package {
import flash.display.*;
public dynamic class Clown extends MovieClip {
public function Clown(){
addFrameScript(36, frame37, 39, frame40, 85, frame86, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 190, frame191, 617, frame618, 872, frame873, 929, frame930, 932, frame933, 972, frame973, 976, frame977, 1008, frame1009, 1012, frame1013, 1054, frame1055, 1058, frame1059, 1068, frame1069, 1496, frame1497, 1751, frame1752, 0x0707, frame1800, 1802, frame1803, 1832, frame1833, 1836, frame1837, 1862, frame1863, 1866, frame1867, 1902, frame1903, 1906, frame1907, 1916, frame1917, 2344, frame2345, 2599, frame2600, 2643, frame2644, 2646, frame2647, 2672, frame2673, 2676, frame2677, 2697, frame2698, 2701, frame2702, 2732, frame2733, 2736, frame2737, 2747, frame2748, 3174, frame3175, 3429, frame3430);
}
function frame2644(){
gotoAndPlay("WalkR4");
}
function frame130(){
stop();
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame873(){
stop();
}
function frame973(){
gotoAndPlay("WalkL2");
}
function frame930(){
gotoAndPlay("WalkR2");
}
function frame3175(){
gotoAndPlay("Clown4");
}
function frame933(){
stop();
}
function frame2673(){
gotoAndPlay("WalkL4");
}
function frame1069(){
stop();
}
function frame618(){
gotoAndPlay("Clown1");
}
function frame37(){
gotoAndPlay("WalkR1");
}
function frame2733(){
gotoAndPlay("WalkU4");
}
function frame977(){
stop();
}
function frame1800(){
gotoAndPlay("WalkR3");
}
function frame1009(){
gotoAndPlay("WalkD2");
}
function frame2647(){
stop();
}
function frame1803(){
stop();
}
function frame1863(){
gotoAndPlay("WalkD3");
}
function frame180(){
stop();
}
function frame2737(){
stop();
}
function frame1903(){
gotoAndPlay("WalkU3");
}
function frame2677(){
stop();
}
function frame2702(){
stop();
}
function frame1907(){
stop();
}
function frame1867(){
stop();
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame86(){
gotoAndPlay("WalkL1");
}
function frame1055(){
gotoAndPlay("WalkU2");
}
function frame1013(){
stop();
}
function frame2345(){
gotoAndPlay("Clown3");
}
function frame1059(){
stop();
}
function frame2600(){
stop();
}
function frame2698(){
gotoAndPlay("WalkD4");
}
function frame1833(){
gotoAndPlay("WalkL3");
}
function frame1497(){
gotoAndPlay("Clown2");
}
function frame2748(){
stop();
}
function frame1752(){
stop();
}
function frame1837(){
stop();
}
function frame3430(){
stop();
}
function frame1917(){
stop();
}
function frame191(){
stop();
}
}
}//package
Section 260
//clown1 (clown1)
package {
import flash.media.*;
public dynamic class clown1 extends Sound {
}
}//package
Section 261
//clown2 (clown2)
package {
import flash.media.*;
public dynamic class clown2 extends Sound {
}
}//package
Section 262
//clown3 (clown3)
package {
import flash.media.*;
public dynamic class clown3 extends Sound {
}
}//package
Section 263
//ColtBlue (ColtBlue)
package {
import flash.display.*;
public dynamic class ColtBlue extends MovieClip {
}
}//package
Section 264
//ColtGreen (ColtGreen)
package {
import flash.display.*;
public dynamic class ColtGreen extends MovieClip {
}
}//package
Section 265
//ColtOrange (ColtOrange)
package {
import flash.display.*;
public dynamic class ColtOrange extends MovieClip {
}
}//package
Section 266
//ColtPink (ColtPink)
package {
import flash.display.*;
public dynamic class ColtPink extends MovieClip {
}
}//package
Section 267
//ColtPurple (ColtPurple)
package {
import flash.display.*;
public dynamic class ColtPurple extends MovieClip {
}
}//package
Section 268
//ColtWhite (ColtWhite)
package {
import flash.display.*;
public dynamic class ColtWhite extends MovieClip {
}
}//package
Section 269
//ColtYellow (ColtYellow)
package {
import flash.display.*;
public dynamic class ColtYellow extends MovieClip {
}
}//package
Section 270
//Commons (Commons)
package {
import flash.display.*;
public dynamic class Commons extends MovieClip {
}
}//package
Section 271
//Cone (Cone)
package {
import flash.display.*;
public dynamic class Cone extends MovieClip {
}
}//package
Section 272
//Cop (Cop)
package {
import flash.display.*;
public dynamic class Cop extends MovieClip {
public var siren:MovieClip;
}
}//package
Section 273
//CopLoc (CopLoc)
package {
import flash.display.*;
public dynamic class CopLoc extends MovieClip {
}
}//package
Section 274
//CS (CS)
package {
import flash.media.*;
public dynamic class CS extends Sound {
}
}//package
Section 275
//curb1 (curb1)
package {
import flash.media.*;
public dynamic class curb1 extends Sound {
}
}//package
Section 276
//curb2 (curb2)
package {
import flash.media.*;
public dynamic class curb2 extends Sound {
}
}//package
Section 277
//curb3 (curb3)
package {
import flash.media.*;
public dynamic class curb3 extends Sound {
}
}//package
Section 278
//deliv1 (deliv1)
package {
import flash.media.*;
public dynamic class deliv1 extends Sound {
}
}//package
Section 279
//deliv2 (deliv2)
package {
import flash.media.*;
public dynamic class deliv2 extends Sound {
}
}//package
Section 280
//deliv3 (deliv3)
package {
import flash.media.*;
public dynamic class deliv3 extends Sound {
}
}//package
Section 281
//DeliveryMarker (DeliveryMarker)
package {
import flash.display.*;
public dynamic class DeliveryMarker extends MovieClip {
public var BT:SimpleButton;
public var HL:MovieClip;
public var numClip:MovieClip;
}
}//package
Section 282
//DeliveryMarker2 (DeliveryMarker2)
package {
import flash.display.*;
public dynamic class DeliveryMarker2 extends MovieClip {
public var numClip:MovieClip;
public var qual:MovieClip;
}
}//package
Section 283
//Female_Biz (Female_Biz)
package {
import flash.display.*;
public dynamic class Female_Biz extends MovieClip {
public function Female_Biz(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 121, frame122, 125, frame126, 167, frame168, 171, frame172, 227, frame228, 230, frame231, 275, frame276, 280, frame281, 312, frame313, 316, frame317, 358, frame359, 362, frame363, 417, frame418, 421, frame422, 467, frame468, 471, frame472, 503, frame504, 507, frame508, 549, frame550, 553, frame554, 603, frame604, 623, frame624, 641, frame642, 661, frame662, 680, frame681, 700, frame701, 720, frame721, 741, frame742, 760, frame761, 780, frame781, 800, frame801, 821, frame822);
}
function frame472(){
stop();
}
function frame231(){
stop();
}
function frame90(){
stop();
}
function frame554(){
stop();
}
function frame313(){
gotoAndPlay("WalkD2");
}
function frame550(){
gotoAndPlay("WalkU3");
}
function frame276(){
gotoAndPlay("WalkR2");
}
function frame317(){
stop();
}
function frame822(){
gotoAndPlay("RunR3");
}
function frame418(){
gotoAndPlay("WalkR3");
}
function frame359(){
gotoAndPlay("WalkU2");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame281(){
stop();
}
function frame681(){
gotoAndPlay("RunU2");
}
function frame363(){
stop();
}
function frame122(){
gotoAndPlay("WalkD1");
}
function frame662(){
gotoAndPlay("RunR1");
}
function frame168(){
gotoAndPlay("WalkU1");
}
function frame422(){
stop();
}
function frame126(){
stop();
}
function frame40(){
stop();
}
function frame781(){
gotoAndPlay("RunD3");
}
function frame228(){
gotoAndPlay("WalkL2");
}
function frame504(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame642(){
gotoAndPlay("RunL1");
}
function frame742(){
gotoAndPlay("RunR2");
}
function frame468(){
gotoAndPlay("WalkL3");
}
function frame624(){
gotoAndPlay("RunD1");
}
function frame801(){
gotoAndPlay("RunL3");
}
function frame604(){
gotoAndPlay("RunU1");
}
function frame508(){
stop();
}
function frame721(){
gotoAndPlay("RunL2");
}
function frame701(){
gotoAndPlay("RunD2");
}
function frame761(){
gotoAndPlay("RunU3");
}
function frame172(){
stop();
}
}
}//package
Section 284
//Female_Cheer (Female_Cheer)
package {
import flash.display.*;
public dynamic class Female_Cheer extends MovieClip {
public function Female_Cheer(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 236, frame237, 238, frame239, 286, frame287, 288, frame289, 324, frame325, 328, frame329, 374, frame375, 378, frame379, 435, frame436, 437, frame438, 485, frame486, 487, frame488, 523, frame524, 527, frame528, 573, frame574, 577, frame578, 607, frame608, 627, frame628, 647, frame648, 668, frame669, 687, frame688, 707, frame708, 727, frame728, 748, frame749, 767, frame768, 787, frame788, 807, frame808, 828, frame829);
}
function frame130(){
stop();
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame574(){
gotoAndPlay("WalkU3");
}
function frame379(){
stop();
}
function frame237(){
gotoAndPlay("WalkR2");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame375(){
gotoAndPlay("WalkU2");
}
function frame438(){
stop();
}
function frame578(){
stop();
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame829(){
gotoAndPlay("RunR3");
}
function frame239(){
stop();
}
function frame180(){
stop();
}
function frame287(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame289(){
stop();
}
function frame488(){
stop();
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame524(){
gotoAndPlay("WalkD3");
}
function frame669(){
gotoAndPlay("RunR1");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame528(){
stop();
}
function frame628(){
gotoAndPlay("RunD1");
}
function frame325(){
gotoAndPlay("WalkD2");
}
function frame608(){
gotoAndPlay("RunU1");
}
function frame708(){
gotoAndPlay("RunD2");
}
function frame768(){
gotoAndPlay("RunU3");
}
function frame329(){
stop();
}
function frame749(){
gotoAndPlay("RunR2");
}
function frame728(){
gotoAndPlay("RunL2");
}
function frame688(){
gotoAndPlay("RunU2");
}
function frame788(){
gotoAndPlay("RunD3");
}
function frame808(){
gotoAndPlay("RunL3");
}
function frame648(){
gotoAndPlay("RunL1");
}
}
}//package
Section 285
//Female_Child (Female_Child)
package {
import flash.display.*;
public dynamic class Female_Child extends MovieClip {
public function Female_Child(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame330(){
stop();
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame440(){
stop();
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 286
//Female_Old1 (Female_Old1)
package {
import flash.display.*;
public dynamic class Female_Old1 extends MovieClip {
public function Female_Old1(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame330(){
stop();
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame440(){
stop();
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 287
//Female_Old2 (Female_Old2)
package {
import flash.display.*;
public dynamic class Female_Old2 extends MovieClip {
public function Female_Old2(){
addFrameScript(74, frame75, 79, frame80, 164, frame165, 169, frame170, 247, frame248, 251, frame252, 339, frame340, 346, frame347, 433, frame434, 438, frame439, 523, frame524, 528, frame529, 606, frame607, 610, frame611, 698, frame699, 705, frame706, 793, frame794, 798, frame799, 883, frame884, 888, frame889, 966, frame967, 970, frame971, 1058, frame1059, 1065, frame1066, 1123, frame1124, 1160, frame1161, 1208, frame1209, 1261, frame1262, 1302, frame1303, 1337, frame1338, 1373, frame1374, 1412, frame1413, 1453, frame1454, 1485, frame1486, 1533, frame1534, 1576, frame1577);
}
function frame252(){
stop();
}
function frame794(){
gotoAndPlay("WalkR3");
}
function frame971(){
stop();
}
function frame434(){
gotoAndPlay("WalkR2");
}
function frame699(){
gotoAndPlay("WalkU2");
}
function frame799(){
stop();
}
function frame75(){
gotoAndPlay("WalkR1");
}
function frame1066(){
stop();
}
function frame439(){
stop();
}
function frame1486(){
gotoAndPlay("RunL3");
}
function frame1124(){
gotoAndPlay("RunR1");
}
function frame611(){
stop();
}
function frame1262(){
gotoAndPlay("RunU1");
}
function frame706(){
stop();
}
function frame1161(){
gotoAndPlay("RunL1");
}
function frame1303(){
gotoAndPlay("RunR2");
}
function frame1209(){
gotoAndPlay("RunD1");
}
function frame340(){
gotoAndPlay("WalkU1");
}
function frame165(){
gotoAndPlay("WalkL1");
}
function frame80(){
stop();
}
function frame884(){
gotoAndPlay("WalkL3");
}
function frame347(){
stop();
}
function frame524(){
gotoAndPlay("WalkL2");
}
function frame889(){
stop();
}
function frame967(){
gotoAndPlay("WalkD3");
}
function frame529(){
stop();
}
function frame248(){
gotoAndPlay("WalkD1");
}
function frame1577(){
gotoAndPlay("RunU3");
}
function frame1413(){
gotoAndPlay("RunU2");
}
function frame1374(){
gotoAndPlay("RunD2");
}
function frame1338(){
gotoAndPlay("RunL2");
}
function frame1454(){
gotoAndPlay("RunR3");
}
function frame1059(){
gotoAndPlay("WalkU3");
}
function frame1534(){
gotoAndPlay("RunD3");
}
function frame170(){
stop();
}
function frame607(){
gotoAndPlay("WalkD2");
}
}
}//package
Section 288
//Female_Reg1 (Female_Reg1)
package {
import flash.display.*;
public dynamic class Female_Reg1 extends MovieClip {
public function Female_Reg1(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame330(){
stop();
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame440(){
stop();
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 289
//Female_Rich (Female_Rich)
package {
import flash.display.*;
public dynamic class Female_Rich extends MovieClip {
public function Female_Rich(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 236, frame237, 238, frame239, 286, frame287, 288, frame289, 324, frame325, 328, frame329, 374, frame375, 378, frame379, 435, frame436, 437, frame438, 485, frame486, 487, frame488, 523, frame524, 527, frame528, 573, frame574, 577, frame578, 607, frame608, 627, frame628, 647, frame648, 668, frame669, 687, frame688, 707, frame708, 727, frame728, 748, frame749, 767, frame768, 787, frame788, 807, frame808, 828, frame829);
}
function frame130(){
stop();
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame574(){
gotoAndPlay("WalkU3");
}
function frame379(){
stop();
}
function frame237(){
gotoAndPlay("WalkR2");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame375(){
gotoAndPlay("WalkU2");
}
function frame438(){
stop();
}
function frame578(){
stop();
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame829(){
gotoAndPlay("RunR3");
}
function frame239(){
stop();
}
function frame180(){
stop();
}
function frame287(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame289(){
stop();
}
function frame488(){
stop();
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame524(){
gotoAndPlay("WalkD3");
}
function frame669(){
gotoAndPlay("RunR1");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame528(){
stop();
}
function frame628(){
gotoAndPlay("RunD1");
}
function frame325(){
gotoAndPlay("WalkD2");
}
function frame608(){
gotoAndPlay("RunU1");
}
function frame708(){
gotoAndPlay("RunD2");
}
function frame768(){
gotoAndPlay("RunU3");
}
function frame329(){
stop();
}
function frame749(){
gotoAndPlay("RunR2");
}
function frame728(){
gotoAndPlay("RunL2");
}
function frame688(){
gotoAndPlay("RunU2");
}
function frame788(){
gotoAndPlay("RunD3");
}
function frame808(){
gotoAndPlay("RunL3");
}
function frame648(){
gotoAndPlay("RunL1");
}
}
}//package
Section 290
//Garb (Garb)
package {
import flash.display.*;
public dynamic class Garb extends MovieClip {
}
}//package
Section 291
//Garbage (Garbage)
package {
import flash.display.*;
public dynamic class Garbage extends MovieClip {
public function Garbage(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 292
//GarbLid (GarbLid)
package {
import flash.display.*;
public dynamic class GarbLid extends MovieClip {
}
}//package
Section 293
//gas1 (gas1)
package {
import flash.media.*;
public dynamic class gas1 extends Sound {
}
}//package
Section 294
//GasDot (GasDot)
package {
import flash.display.*;
public dynamic class GasDot extends MovieClip {
public function GasDot(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 295
//GoblinBlue (GoblinBlue)
package {
import flash.display.*;
public dynamic class GoblinBlue extends MovieClip {
}
}//package
Section 296
//GoblinGrey (GoblinGrey)
package {
import flash.display.*;
public dynamic class GoblinGrey extends MovieClip {
}
}//package
Section 297
//GoblinOrange (GoblinOrange)
package {
import flash.display.*;
public dynamic class GoblinOrange extends MovieClip {
}
}//package
Section 298
//GoblinPurple (GoblinPurple)
package {
import flash.display.*;
public dynamic class GoblinPurple extends MovieClip {
}
}//package
Section 299
//GoblinTan (GoblinTan)
package {
import flash.display.*;
public dynamic class GoblinTan extends MovieClip {
}
}//package
Section 300
//GoblinYellow (GoblinYellow)
package {
import flash.display.*;
public dynamic class GoblinYellow extends MovieClip {
}
}//package
Section 301
//hit1 (hit1)
package {
import flash.media.*;
public dynamic class hit1 extends Sound {
}
}//package
Section 302
//hit2 (hit2)
package {
import flash.media.*;
public dynamic class hit2 extends Sound {
}
}//package
Section 303
//hit3 (hit3)
package {
import flash.media.*;
public dynamic class hit3 extends Sound {
}
}//package
Section 304
//hit4 (hit4)
package {
import flash.media.*;
public dynamic class hit4 extends Sound {
}
}//package
Section 305
//hit5 (hit5)
package {
import flash.media.*;
public dynamic class hit5 extends Sound {
}
}//package
Section 306
//HotDog (HotDog)
package {
import flash.display.*;
public dynamic class HotDog extends MovieClip {
public function HotDog(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 211, frame212, 231, frame232, 251, frame252, 272, frame273);
}
function frame273(){
gotoAndPlay("RunR1");
}
function frame252(){
gotoAndPlay("RunL1");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame212(){
gotoAndPlay("RunU1");
}
function frame130(){
stop();
}
function frame40(){
stop();
}
function frame232(){
gotoAndPlay("RunD1");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame180(){
stop();
}
}
}//package
Section 307
//HP (HP)
package {
import flash.media.*;
public dynamic class HP extends Sound {
}
}//package
Section 308
//Hydrant (Hydrant)
package {
import flash.display.*;
public dynamic class Hydrant extends MovieClip {
public function Hydrant(){
addFrameScript(0, frame1, 9, frame10, 19, frame20, 29, frame30);
}
function frame30(){
stop();
}
function frame20(){
stop();
}
function frame10(){
stop();
}
function frame1(){
stop();
}
}
}//package
Section 309
//inter1 (inter1)
package {
import flash.media.*;
public dynamic class inter1 extends Sound {
}
}//package
Section 310
//inter2 (inter2)
package {
import flash.media.*;
public dynamic class inter2 extends Sound {
}
}//package
Section 311
//inter3 (inter3)
package {
import flash.media.*;
public dynamic class inter3 extends Sound {
}
}//package
Section 312
//item1 (item1)
package {
import flash.media.*;
public dynamic class item1 extends Sound {
}
}//package
Section 313
//item2 (item2)
package {
import flash.media.*;
public dynamic class item2 extends Sound {
}
}//package
Section 314
//JeepBlue (JeepBlue)
package {
import flash.display.*;
public dynamic class JeepBlue extends MovieClip {
}
}//package
Section 315
//JeepBrown (JeepBrown)
package {
import flash.display.*;
public dynamic class JeepBrown extends MovieClip {
}
}//package
Section 316
//JeepGreen (JeepGreen)
package {
import flash.display.*;
public dynamic class JeepGreen extends MovieClip {
}
}//package
Section 317
//JeepGrey (JeepGrey)
package {
import flash.display.*;
public dynamic class JeepGrey extends MovieClip {
}
}//package
Section 318
//JeepOlive (JeepOlive)
package {
import flash.display.*;
public dynamic class JeepOlive extends MovieClip {
}
}//package
Section 319
//JeepOrange (JeepOrange)
package {
import flash.display.*;
public dynamic class JeepOrange extends MovieClip {
}
}//package
Section 320
//JeepYellow (JeepYellow)
package {
import flash.display.*;
public dynamic class JeepYellow extends MovieClip {
}
}//package
Section 321
//level1 (level1)
package {
import flash.media.*;
public dynamic class level1 extends Sound {
}
}//package
Section 322
//LT (LT)
package {
import flash.media.*;
public dynamic class LT extends Sound {
}
}//package
Section 323
//Mail (Mail)
package {
import flash.display.*;
public dynamic class Mail extends MovieClip {
}
}//package
Section 324
//Mailbox (Mailbox)
package {
import flash.display.*;
public dynamic class Mailbox extends MovieClip {
public function Mailbox(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 325
//Male_Afro (Male_Afro)
package {
import flash.display.*;
public dynamic class Male_Afro extends MovieClip {
public function Male_Afro(){
addFrameScript(36, frame37, 39, frame40, 85, frame86, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame37(){
gotoAndPlay("WalkR1");
}
function frame330(){
stop();
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame86(){
gotoAndPlay("WalkL1");
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame440(){
stop();
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 326
//Male_Business (Male_Business)
package {
import flash.display.*;
public dynamic class Male_Business extends MovieClip {
public function Male_Business(){
addFrameScript(16, frame17, 19, frame20, 44, frame45, 48, frame49, 77, frame78, 79, frame80, 106, frame107, 110, frame111, 145, frame146, 148, frame149, 173, frame174, 177, frame178, 206, frame207, 208, frame209, 235, frame236, 239, frame240, 265, frame266, 268, frame269, 293, frame294, 297, frame298, 326, frame327, 328, frame329, 355, frame356, 359, frame360, 411, frame412, 431, frame432, 451, frame452, 472, frame473, 491, frame492, 511, frame512, 531, frame532, 552, frame553, 571, frame572, 591, frame592, 611, frame612, 632, frame633);
}
function frame294(){
gotoAndPlay("WalkL3");
}
function frame174(){
gotoAndPlay("WalkL2");
}
function frame473(){
gotoAndPlay("RunR1");
}
function frame111(){
stop();
}
function frame178(){
stop();
}
function frame432(){
gotoAndPlay("RunD1");
}
function frame356(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkU2");
}
function frame512(){
gotoAndPlay("RunD2");
}
function frame572(){
gotoAndPlay("RunU3");
}
function frame298(){
stop();
}
function frame553(){
gotoAndPlay("RunR2");
}
function frame78(){
gotoAndPlay("WalkD1");
}
function frame412(){
gotoAndPlay("RunU1");
}
function frame592(){
gotoAndPlay("RunD3");
}
function frame612(){
gotoAndPlay("RunL3");
}
function frame17(){
gotoAndPlay("WalkR1");
}
function frame532(){
gotoAndPlay("RunL2");
}
function frame492(){
gotoAndPlay("RunU2");
}
function frame452(){
gotoAndPlay("RunL1");
}
function frame360(){
stop();
}
function frame240(){
stop();
}
function frame80(){
stop();
}
function frame146(){
gotoAndPlay("WalkR2");
}
function frame269(){
stop();
}
function frame149(){
stop();
}
function frame327(){
gotoAndPlay("WalkD3");
}
function frame266(){
gotoAndPlay("WalkR3");
}
function frame329(){
stop();
}
function frame45(){
gotoAndPlay("WalkL1");
}
function frame107(){
gotoAndPlay("WalkU1");
}
function frame207(){
gotoAndPlay("WalkD2");
}
function frame209(){
stop();
}
function frame633(){
gotoAndPlay("RunR3");
}
function frame49(){
stop();
}
function frame20(){
stop();
}
}
}//package
Section 327
//Male_Greaser (Male_Greaser)
package {
import flash.display.*;
public dynamic class Male_Greaser extends MovieClip {
public function Male_Greaser(){
addFrameScript(36, frame37, 39, frame40, 85, frame86, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame37(){
gotoAndPlay("WalkR1");
}
function frame330(){
stop();
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame86(){
gotoAndPlay("WalkL1");
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame440(){
stop();
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 328
//Male_MiddleAged (Male_MiddleAged)
package {
import flash.display.*;
public dynamic class Male_MiddleAged extends MovieClip {
public function Male_MiddleAged(){
addFrameScript(36, frame37, 39, frame40, 85, frame86, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 658, frame659, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 738, frame739, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 818, frame819, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame659(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame739(){
stop();
}
function frame37(){
gotoAndPlay("WalkR1");
}
function frame330(){
stop();
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame819(){
stop();
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame86(){
gotoAndPlay("WalkL1");
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame440(){
stop();
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 329
//Male_Mob (Male_Mob)
package {
import flash.display.*;
public dynamic class Male_Mob extends MovieClip {
public function Male_Mob(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame330(){
stop();
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame440(){
stop();
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 330
//Male_Old (Male_Old)
package {
import flash.display.*;
public dynamic class Male_Old extends MovieClip {
public function Male_Old(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 635, frame636, 639, frame640, 685, frame686, 689, frame690, 725, frame726, 729, frame730, 775, frame776, 779, frame780, 811, frame812, 831, frame832, 851, frame852, 872, frame873, 891, frame892, 911, frame912, 931, frame932, 952, frame953, 971, frame972, 991, frame992, 1011, frame1012, 1032, frame1033, 1061, frame1062, 1081, frame1082, 1101, frame1102, 1121, frame1122);
}
function frame690(){
stop();
}
function frame130(){
stop();
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame1082(){
gotoAndPlay("RunD4");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame776(){
gotoAndPlay("WalkU4");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame892(){
gotoAndPlay("RunU2");
}
function frame636(){
gotoAndPlay("WalkR4");
}
function frame912(){
gotoAndPlay("RunD2");
}
function frame730(){
stop();
}
function frame852(){
gotoAndPlay("RunL1");
}
function frame832(){
gotoAndPlay("RunD1");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame812(){
gotoAndPlay("RunU1");
}
function frame530(){
stop();
}
function frame1102(){
gotoAndPlay("RunL4");
}
function frame873(){
gotoAndPlay("RunR1");
}
function frame1062(){
gotoAndPlay("RunU4");
}
function frame953(){
gotoAndPlay("RunR2");
}
function frame932(){
gotoAndPlay("RunL2");
}
function frame330(){
stop();
}
function frame180(){
stop();
}
function frame992(){
gotoAndPlay("RunD3");
}
function frame380(){
stop();
}
function frame972(){
gotoAndPlay("RunU3");
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame780(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame1012(){
gotoAndPlay("RunL3");
}
function frame686(){
gotoAndPlay("WalkL4");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame440(){
stop();
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame726(){
gotoAndPlay("WalkD4");
}
function frame1122(){
gotoAndPlay("RunR4");
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame1033(){
gotoAndPlay("RunR3");
}
function frame640(){
stop();
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 331
//Male_Rich (Male_Rich)
package {
import flash.display.*;
public dynamic class Male_Rich extends MovieClip {
public function Male_Rich(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 236, frame237, 238, frame239, 286, frame287, 288, frame289, 324, frame325, 328, frame329, 374, frame375, 378, frame379, 435, frame436, 437, frame438, 485, frame486, 487, frame488, 523, frame524, 527, frame528, 573, frame574, 577, frame578, 609, frame610, 629, frame630, 649, frame650, 670, frame671, 689, frame690, 709, frame710, 729, frame730, 750, frame751, 769, frame770, 789, frame790, 809, frame810, 830, frame831);
}
function frame690(){
gotoAndPlay("RunU2");
}
function frame130(){
stop();
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame574(){
gotoAndPlay("WalkU3");
}
function frame630(){
gotoAndPlay("RunD1");
}
function frame730(){
gotoAndPlay("RunL2");
}
function frame379(){
stop();
}
function frame237(){
gotoAndPlay("WalkR2");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame375(){
gotoAndPlay("WalkU2");
}
function frame438(){
stop();
}
function frame751(){
gotoAndPlay("RunR2");
}
function frame610(){
gotoAndPlay("RunU1");
}
function frame578(){
stop();
}
function frame810(){
gotoAndPlay("RunL3");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame650(){
gotoAndPlay("RunL1");
}
function frame710(){
gotoAndPlay("RunD2");
}
function frame790(){
gotoAndPlay("RunD3");
}
function frame239(){
stop();
}
function frame671(){
gotoAndPlay("RunR1");
}
function frame180(){
stop();
}
function frame831(){
gotoAndPlay("RunR3");
}
function frame287(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame289(){
stop();
}
function frame488(){
stop();
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame524(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame528(){
stop();
}
function frame325(){
gotoAndPlay("WalkD2");
}
function frame329(){
stop();
}
function frame770(){
gotoAndPlay("RunU3");
}
}
}//package
Section 332
//Male_Tall (Male_Tall)
package {
import flash.display.*;
public dynamic class Male_Tall extends MovieClip {
public function Male_Tall(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame330(){
stop();
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame440(){
stop();
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 333
//Male_Thug (Male_Thug)
package {
import flash.display.*;
public dynamic class Male_Thug extends MovieClip {
public function Male_Thug(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 235, frame236, 239, frame240, 285, frame286, 289, frame290, 325, frame326, 329, frame330, 375, frame376, 379, frame380, 435, frame436, 439, frame440, 485, frame486, 489, frame490, 525, frame526, 529, frame530, 575, frame576, 579, frame580, 611, frame612, 631, frame632, 651, frame652, 672, frame673, 691, frame692, 711, frame712, 731, frame732, 752, frame753, 0x0303, frame772, 791, frame792, 811, frame812, 832, frame833);
}
function frame130(){
stop();
}
function frame692(){
gotoAndPlay("RunU2");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame376(){
gotoAndPlay("WalkU2");
}
function frame652(){
gotoAndPlay("RunL1");
}
function frame576(){
gotoAndPlay("WalkU3");
}
function frame236(){
gotoAndPlay("WalkR2");
}
function frame732(){
gotoAndPlay("RunL2");
}
function frame612(){
gotoAndPlay("RunU1");
}
function frame712(){
gotoAndPlay("RunD2");
}
function frame530(){
stop();
}
function frame632(){
gotoAndPlay("RunD1");
}
function frame436(){
gotoAndPlay("WalkR3");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame812(){
gotoAndPlay("RunL3");
}
function frame673(){
gotoAndPlay("RunR1");
}
function frame753(){
gotoAndPlay("RunR2");
}
function frame833(){
gotoAndPlay("RunR3");
}
function frame330(){
stop();
}
function frame180(){
stop();
}
function frame772(){
gotoAndPlay("RunU3");
}
function frame380(){
stop();
}
function frame580(){
stop();
}
function frame240(){
stop();
}
function frame286(){
gotoAndPlay("WalkL2");
}
function frame486(){
gotoAndPlay("WalkL3");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame40(){
stop();
}
function frame440(){
stop();
}
function frame526(){
gotoAndPlay("WalkD3");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame792(){
gotoAndPlay("RunD3");
}
function frame326(){
gotoAndPlay("WalkD2");
}
function frame290(){
stop();
}
function frame490(){
stop();
}
}
}//package
Section 334
//marker1 (marker1)
package {
import flash.media.*;
public dynamic class marker1 extends Sound {
}
}//package
Section 335
//mc_preroll_logo (mc_preroll_logo)
package {
import flash.display.*;
public dynamic class mc_preroll_logo extends MovieClip {
public function mc_preroll_logo(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 336
//mc_preroll_play (mc_preroll_play)
package {
import flash.display.*;
public dynamic class mc_preroll_play extends MovieClip {
public function mc_preroll_play(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 337
//Mime (Mime)
package {
import flash.display.*;
public dynamic class Mime extends MovieClip {
}
}//package
Section 338
//misc1 (misc1)
package {
import flash.media.*;
public dynamic class misc1 extends Sound {
}
}//package
Section 339
//money1 (money1)
package {
import flash.media.*;
public dynamic class money1 extends Sound {
}
}//package
Section 340
//money2 (money2)
package {
import flash.media.*;
public dynamic class money2 extends Sound {
}
}//package
Section 341
//money3 (money3)
package {
import flash.media.*;
public dynamic class money3 extends Sound {
}
}//package
Section 342
//MT (MT)
package {
import flash.media.*;
public dynamic class MT extends Sound {
}
}//package
Section 343
//nitro1 (nitro1)
package {
import flash.media.*;
public dynamic class nitro1 extends Sound {
}
}//package
Section 344
//nitro2 (nitro2)
package {
import flash.media.*;
public dynamic class nitro2 extends Sound {
}
}//package
Section 345
//outGas1 (outGas1)
package {
import flash.media.*;
public dynamic class outGas1 extends Sound {
}
}//package
Section 346
//Pave (Pave)
package {
import flash.display.*;
public dynamic class Pave extends MovieClip {
}
}//package
Section 347
//ped1 (ped1)
package {
import flash.media.*;
public dynamic class ped1 extends Sound {
}
}//package
Section 348
//ped2 (ped2)
package {
import flash.media.*;
public dynamic class ped2 extends Sound {
}
}//package
Section 349
//ped3 (ped3)
package {
import flash.media.*;
public dynamic class ped3 extends Sound {
}
}//package
Section 350
//ped4 (ped4)
package {
import flash.media.*;
public dynamic class ped4 extends Sound {
}
}//package
Section 351
//PizzaDot (PizzaDot)
package {
import flash.display.*;
public dynamic class PizzaDot extends MovieClip {
public function PizzaDot(){
addFrameScript(39, frame40, 89, frame90, 161, frame162, 229, frame230, 288, frame289, 338, frame339, 410, frame411, 478, frame479, 538, frame539, 588, frame589, 660, frame661, 728, frame729);
}
function frame162(){
gotoAndPlay("good2");
}
function frame230(){
gotoAndPlay("good1");
}
function frame90(){
gotoAndPlay("good3");
}
function frame289(){
gotoAndPlay("med4");
}
function frame411(){
gotoAndPlay("med2");
}
function frame589(){
gotoAndPlay("poor3");
}
function frame661(){
gotoAndPlay("poor2");
}
function frame339(){
gotoAndPlay("med3");
}
function frame539(){
gotoAndPlay("poor4");
}
function frame479(){
gotoAndPlay("med1");
}
function frame729(){
gotoAndPlay("poor1");
}
function frame40(){
gotoAndPlay("good4");
}
}
}//package
Section 352
//PZ (PZ)
package {
import flash.media.*;
public dynamic class PZ extends Sound {
}
}//package
Section 353
//RoadieBlue (RoadieBlue)
package {
import flash.display.*;
public dynamic class RoadieBlue extends MovieClip {
}
}//package
Section 354
//RoadiePink (RoadiePink)
package {
import flash.display.*;
public dynamic class RoadiePink extends MovieClip {
}
}//package
Section 355
//RoadiePurple (RoadiePurple)
package {
import flash.display.*;
public dynamic class RoadiePurple extends MovieClip {
}
}//package
Section 356
//RoadieRed (RoadieRed)
package {
import flash.display.*;
public dynamic class RoadieRed extends MovieClip {
}
}//package
Section 357
//Robber (Robber)
package {
import flash.display.*;
public dynamic class Robber extends MovieClip {
public function Robber(){
addFrameScript(37, frame38, 39, frame40, 87, frame88, 89, frame90, 125, frame126, 129, frame130, 175, frame176, 179, frame180, 211, frame212, 231, frame232, 251, frame252, 272, frame273);
}
function frame273(){
gotoAndPlay("RunR1");
}
function frame252(){
gotoAndPlay("RunL1");
}
function frame176(){
gotoAndPlay("WalkU1");
}
function frame90(){
stop();
}
function frame212(){
gotoAndPlay("RunU1");
}
function frame130(){
stop();
}
function frame40(){
stop();
}
function frame232(){
gotoAndPlay("RunD1");
}
function frame88(){
gotoAndPlay("WalkL1");
}
function frame126(){
gotoAndPlay("WalkD1");
}
function frame38(){
gotoAndPlay("WalkR1");
}
function frame180(){
stop();
}
}
}//package
Section 358
//siren1 (siren1)
package {
import flash.media.*;
public dynamic class siren1 extends Sound {
}
}//package
Section 359
//siren2 (siren2)
package {
import flash.media.*;
public dynamic class siren2 extends Sound {
}
}//package
Section 360
//Skull (Skull)
package {
import flash.display.*;
public dynamic class Skull extends MovieClip {
public function Skull(){
addFrameScript(28, frame29, 89, frame90);
}
function frame90(){
gotoAndPlay(30);
}
function frame29(){
gotoAndPlay(1);
}
}
}//package
Section 361
//SpunkBlue (SpunkBlue)
package {
import flash.display.*;
public dynamic class SpunkBlue extends MovieClip {
}
}//package
Section 362
//SpunkBrown (SpunkBrown)
package {
import flash.display.*;
public dynamic class SpunkBrown extends MovieClip {
}
}//package
Section 363
//SpunkGreen (SpunkGreen)
package {
import flash.display.*;
public dynamic class SpunkGreen extends MovieClip {
}
}//package
Section 364
//SpunkPink (SpunkPink)
package {
import flash.display.*;
public dynamic class SpunkPink extends MovieClip {
}
}//package
Section 365
//SpunkPurple (SpunkPurple)
package {
import flash.display.*;
public dynamic class SpunkPurple extends MovieClip {
}
}//package
Section 366
//SpunkRed (SpunkRed)
package {
import flash.display.*;
public dynamic class SpunkRed extends MovieClip {
}
}//package
Section 367
//SpunkYellow (SpunkYellow)
package {
import flash.display.*;
public dynamic class SpunkYellow extends MovieClip {
}
}//package
Section 368
//TileSet1 (TileSet1)
package {
import flash.display.*;
public dynamic class TileSet1 extends MovieClip {
}
}//package
Section 369
//TileSet10 (TileSet10)
package {
import flash.display.*;
public dynamic class TileSet10 extends MovieClip {
public var clip:MovieClip;
public var char:MovieClip;
}
}//package
Section 370
//TileSet11 (TileSet11)
package {
import flash.display.*;
public dynamic class TileSet11 extends MovieClip {
}
}//package
Section 371
//TileSet12 (TileSet12)
package {
import flash.display.*;
public dynamic class TileSet12 extends MovieClip {
public var clip:MovieClip;
public var char:MovieClip;
}
}//package
Section 372
//TileSet13 (TileSet13)
package {
import flash.display.*;
public dynamic class TileSet13 extends MovieClip {
public var char:MovieClip;
}
}//package
Section 373
//TileSet2 (TileSet2)
package {
import flash.display.*;
public dynamic class TileSet2 extends MovieClip {
public var clip:MovieClip;
public var char:MovieClip;
}
}//package
Section 374
//TileSet3 (TileSet3)
package {
import flash.display.*;
public dynamic class TileSet3 extends MovieClip {
}
}//package
Section 375
//TileSet4 (TileSet4)
package {
import flash.display.*;
public dynamic class TileSet4 extends MovieClip {
public var clip:MovieClip;
public var char:MovieClip;
}
}//package
Section 376
//TileSet5 (TileSet5)
package {
import flash.display.*;
public dynamic class TileSet5 extends MovieClip {
}
}//package
Section 377
//TileSet6 (TileSet6)
package {
import flash.display.*;
public dynamic class TileSet6 extends MovieClip {
public var clip:MovieClip;
public var char:MovieClip;
}
}//package
Section 378
//TileSet7 (TileSet7)
package {
import flash.display.*;
public dynamic class TileSet7 extends MovieClip {
}
}//package
Section 379
//TileSet8 (TileSet8)
package {
import flash.display.*;
public dynamic class TileSet8 extends MovieClip {
public var clip:MovieClip;
public var char:MovieClip;
}
}//package
Section 380
//TileSet9 (TileSet9)
package {
import flash.display.*;
public dynamic class TileSet9 extends MovieClip {
}
}//package
Section 381
//TonyDot (TonyDot)
package {
import flash.display.*;
public dynamic class TonyDot extends MovieClip {
public function TonyDot(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 382
//TowTruck (TowTruck)
package {
import flash.display.*;
public dynamic class TowTruck extends MovieClip {
}
}//package
Section 383
//TT (TT)
package {
import flash.media.*;
public dynamic class TT extends Sound {
}
}//package
Section 384
//UT (UT)
package {
import flash.media.*;
public dynamic class UT extends Sound {
}
}//package
Section 385
//WagonBlue (WagonBlue)
package {
import flash.display.*;
public dynamic class WagonBlue extends MovieClip {
}
}//package
Section 386
//WagonBrown (WagonBrown)
package {
import flash.display.*;
public dynamic class WagonBrown extends MovieClip {
}
}//package
Section 387
//WagonGreen (WagonGreen)
package {
import flash.display.*;
public dynamic class WagonGreen extends MovieClip {
}
}//package
Section 388
//WagonOlive (WagonOlive)
package {
import flash.display.*;
public dynamic class WagonOlive extends MovieClip {
}
}//package
Section 389
//WagonOrange (WagonOrange)
package {
import flash.display.*;
public dynamic class WagonOrange extends MovieClip {
}
}//package
Section 390
//WagonPink (WagonPink)
package {
import flash.display.*;
public dynamic class WagonPink extends MovieClip {
}
}//package
Section 391
//WagonPurple (WagonPurple)
package {
import flash.display.*;
public dynamic class WagonPurple extends MovieClip {
}
}//package
Section 392
//Water (Water)
package {
import flash.display.*;
public dynamic class Water extends MovieClip {
public function Water(){
addFrameScript(165, frame166);
}
function frame166(){
stop();
}
}
}//package
Section 393
//YP (YP)
package {
import flash.media.*;
public dynamic class YP extends Sound {
}
}//package