Section 1
//MainTimeline (As7_3D20080530_fla.MainTimeline)
package As7_3D20080530_fla {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import flash.utils.*;
import flash.ui.*;
import flash.text.*;
import flash.net.*;
import flash.filters.*;
import flash.system.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.media.*;
import flash.printing.*;
import flash.xml.*;
public dynamic class MainTimeline extends MovieClip {
public var link:ContextMenuItem;
public var p3d:papervision;
public var Status:TextField;
public var permit:Boolean;
public var Percent:TextField;
public var ButtonRendered:SimpleButton;
public var ButtonInteractive:SimpleButton;
public var Background:MovieClip;
public var menu:ContextMenu;
public var ButtonViewpoint0:SimpleButton;
public var ButtonViewpoint1:SimpleButton;
public var ButtonQuality:SimpleButton;
public var location:String;
public var ver:Array;
public var now:Number;
public var Getflashplayer:SimpleButton;
public var qualitylevel:String;
public function MainTimeline(){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4);
}
public function quality(_arg1:MouseEvent){
if (qualitylevel == "LOW"){
p3d.quality("HIGH");
Status.text = "HIGH";
qualitylevel = "HIGH";
} else {
if (qualitylevel == "HIGH"){
p3d.quality("LOW");
Status.text = "LOW";
qualitylevel = "LOW";
};
};
}
public function init(_arg1:Event){
ButtonRendered.enabled = true;
}
function frame1(){
ver = Capabilities.version.split(" ");
ver = ver[1].split(",");
qualitylevel = "HIGH";
Getflashplayer.visible = false;
Getflashplayer.mouseEnabled = false;
if (ver[0] < 9){
Getflashplayer.visible = true;
Getflashplayer.mouseEnabled = true;
Getflashplayer.addEventListener(MouseEvent.CLICK, Getfp);
stop();
} else {
location = stage.loaderInfo.url;
if (location.substr(0, 4) == "file"){
permit = true;
} else {
if (((((((!((location.search("Latias_3D_Model_by_MBRSL.swf") == -1))) || (!((location.search("mbrsl.deviantart.com") == -1))))) || (!((location.search("www.deviantart.com/deviation/44720990") == -1))))) || (!((location.search("mbrsl.myweb.hinet.net") == -1))))){
permit = true;
} else {
permit = false;
};
};
if (!permit){
stop();
} else {
menu = new ContextMenu();
link = new ContextMenuItem("By MBRSL");
link.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, geturl);
menu.hideBuiltInItems();
menu.customItems.push(link);
Background.contextMenu = menu;
p3d = new papervision();
root.loaderInfo.addEventListener(ProgressEvent.PROGRESS, update);
root.loaderInfo.addEventListener(Event.COMPLETE, init);
gotoAndPlay("Interactive");
};
};
stop();
}
function frame3(){
Percent.text = (now + "%");
if (Percent.text == "100%"){
ButtonRendered.enabled = true;
} else {
ButtonRendered.enabled = false;
};
if (qualitylevel == "HIGH"){
Status.text = "HIGH";
} else {
Status.text = "LOW";
};
ButtonRendered.addEventListener(MouseEvent.CLICK, Rendered);
ButtonViewpoint0.addEventListener(MouseEvent.CLICK, viewpoint0);
ButtonViewpoint1.addEventListener(MouseEvent.CLICK, viewpoint1);
ButtonQuality.addEventListener(MouseEvent.CLICK, quality);
stage.frameRate = 60;
p3d.create3D(stage, qualitylevel);
stop();
}
public function geturl(_arg1:ContextMenuEvent){
navigateToURL(new URLRequest("http://mbrsl.deviantart.com/"));
}
function frame4(){
stage.frameRate = 25;
p3d.clean3D();
ButtonInteractive.addEventListener(MouseEvent.CLICK, Interactive);
stop();
}
public function Getfp(_arg1:MouseEvent){
navigateToURL(new URLRequest("http://www.adobe.com/go/gntray_dl_getflashplayer"));
}
public function viewpoint1(_arg1:MouseEvent){
p3d.changeport(1);
}
public function viewpoint0(_arg1:MouseEvent){
p3d.changeport(0);
}
function frame2(){
prevFrame();
}
public function Interactive(_arg1:MouseEvent){
gotoAndStop("Interactive");
}
public function update(_arg1:ProgressEvent){
now = Math.floor(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100));
Percent.text = (String(now) + "%");
}
public function Rendered(_arg1:MouseEvent){
if (ButtonRendered.enabled){
gotoAndStop("Rendered");
};
}
}
}//package As7_3D20080530_fla
Section 2
//DebugDispatcher (com.blitzagency.xray.logger.events.DebugDispatcher)
package com.blitzagency.xray.logger.events {
import flash.events.*;
public class DebugDispatcher extends EventDispatcher {
public static var TRACE:String = "trace";
public function sendEvent(_arg1:String, _arg2:Object):void{
trace(_arg2.message);
dispatchEvent(new DebugEvent(DebugDispatcher.TRACE, false, false, _arg2));
}
}
}//package com.blitzagency.xray.logger.events
Section 3
//DebugEvent (com.blitzagency.xray.logger.events.DebugEvent)
package com.blitzagency.xray.logger.events {
import flash.events.*;
public class DebugEvent extends Event {
public var obj:Object;
public function DebugEvent(_arg1:String, _arg2:Boolean, _arg3:Boolean, _arg4:Object):void{
obj = new Object();
super(_arg1, _arg2, _arg3);
obj = _arg4;
}
}
}//package com.blitzagency.xray.logger.events
Section 4
//ObjectTools (com.blitzagency.xray.logger.util.ObjectTools)
package com.blitzagency.xray.logger.util {
import com.blitzagency.xray.logger.*;
import flash.utils.*;
public class ObjectTools {
private static var log:XrayLog = new XrayLog();
public function resolveBaseType(_arg1:Object):String{
return ("");
}
public static function getImmediateClassPath(_arg1:Object):String{
var _local2:String;
var _local3:String;
_local2 = getQualifiedClassName(_arg1);
_local3 = getQualifiedSuperclassName(_arg1);
_local2 = ((_local2.indexOf("::") > -1)) ? _local2.split("::").join(".") : _local2;
if (_local3 == null){
return (_local2);
};
_local3 = ((_local3.indexOf("::") > -1)) ? _local3.split("::").join(".") : _local3;
return (((_local3 + ".") + _local2));
}
public static function getFullClassPath(_arg1:Object):String{
var _local2:XML;
var _local3:Array;
var _local4:String;
var _local5:XML;
var _local6:String;
_local2 = describeType(_arg1);
_local3 = [];
_local4 = getQualifiedClassName(_arg1);
_local4 = ((_local4.indexOf("::") > -1)) ? _local4.split("::").join(".") : _local4;
_local3.push(_local4);
for each (_local5 in _local2.extendsClass) {
_local6 = ((_local5.@type.toString().indexOf("::") > -1)) ? _local5.@type.toString().split("::")[1] : _local5.@type.toString();
_local3.push(_local6);
};
return (_local3.join("."));
}
}
}//package com.blitzagency.xray.logger.util
Section 5
//PropertyTools (com.blitzagency.xray.logger.util.PropertyTools)
package com.blitzagency.xray.logger.util {
import flash.utils.*;
public class PropertyTools {
private static function getVariables():void{
}
public static function getProperties(_arg1:Object):Array{
var ary:Array;
var xmlDoc:XML;
var item:XML;
var name:String;
var type:String;
var value:Object;
var obj = _arg1;
ary = [];
try {
xmlDoc = describeType(obj);
for each (item in xmlDoc.variable) {
name = item.@name.toString();
type = item.@type.toString();
value = ((obj[name])!=null) ? obj[name] : "";
ary.push({name:name, type:type, value:value});
};
} catch(e:Error) {
};
return (ary);
}
private static function getMethods():void{
}
}
}//package com.blitzagency.xray.logger.util
Section 6
//Debug (com.blitzagency.xray.logger.Debug)
package com.blitzagency.xray.logger {
import flash.events.*;
import flash.utils.*;
import com.blitzagency.xray.logger.events.*;
import flash.net.*;
public class Debug {
private static var connected:Boolean = false;
private static var xrayLC:LocalConnection;
private static var ed:DebugDispatcher = new DebugDispatcher();
public static function traceObject(_arg1:Object, _arg2:Number=254, _arg3:Number=0, _arg4:String="", _arg5:Number=0):void{
var recurseDepth:Number;
var indent:Number;
var prop:String;
var lead:String;
var i:Number;
var obj:String;
var o = _arg1;
var pRecurseDepth = _arg2;
var pIndent = _arg3;
var pPackage = _arg4;
var pLevel = _arg5;
try {
recurseDepth = pRecurseDepth;
indent = pIndent;
for (prop in o) {
lead = "";
i = 0;
while (i < indent) {
lead = (lead + " ");
i = (i + 1);
};
obj = o[prop].toString();
if ((o[prop] is Array)){
obj = "[Array]";
};
if (obj == "[object Object]"){
obj = "[Object]";
};
Debug.trace((((lead + prop) + ": ") + obj), pPackage, pLevel);
if (recurseDepth > 0){
Debug.traceObject(o[prop], (recurseDepth - 1), (indent + 1), pPackage, pLevel);
};
};
} catch(e:Error) {
};
}
public static function trace(_arg1:Object, _arg2:String="", _arg3:Number=0):void{
var msg:String;
var pMsg = _arg1;
var pPackage = _arg2;
var pLevel = _arg3;
ed.sendEvent(DebugDispatcher.TRACE, {message:pMsg, classPackage:pPackage});
if (!connected){
makeConnection();
};
if (connected){
try {
msg = ((String(pMsg).length >= 39995)) ? (String(pMsg).substr(0, 39995) + "...") : String(pMsg);
xrayLC.send("_xray_view_conn", "setTrace", msg, pLevel, pPackage);
} catch(e:LogError) {
LogError("No Xray Interface running");
};
};
}
private static function makeConnection():void{
var err:LogError;
xrayLC = new LocalConnection();
xrayLC.addEventListener("status", statusHandler);
xrayLC.allowDomain("*");
try {
xrayLC.connect(("_xray_standAlone_debug" + getTimer()));
connected = true;
} catch(e:Error) {
err = new LogError("log");
setTimeout(makeConnection, 1000);
};
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
ed.addEventListener(_arg1, _arg2);
}
private static function initialize():Boolean{
ed = new DebugDispatcher();
return (true);
}
private static function statusHandler(_arg1:StatusEvent):void{
if ((((((_arg1.code == null)) && ((_arg1.level == "error")))) && (connected))){
connected = false;
} else {
if ((((_arg1.level == "status")) && ((_arg1.code == null)))){
connected = true;
};
};
}
}
}//package com.blitzagency.xray.logger
class LogError extends Error {
private function LogError(_arg1:String){
super(_arg1);
}
}
Section 7
//Log (com.blitzagency.xray.logger.Log)
package com.blitzagency.xray.logger {
import com.blitzagency.xray.logger.util.*;
public class Log {
private var level:Number;
private var caller:String;// = ""
private var classPackage:String;
private var dump:Object;
private var message:String;
public function Log(_arg1:String, _arg2:Object, _arg3:Number, ... _args){
var err:LogError;
var nullArray:Array;
var str:String;
var p_message = _arg1;
var p_dump = _arg2;
var p_level = _arg3;
var rest = _args;
caller = "";
super();
try {
nullArray.push("bogus");
} catch(e:Error) {
err = new LogError("log");
} finally {
if (err.hasOwnProperty("getStackTrace")){
str = err.getStackTrace();
setCaller(resolveCaller(str));
} else {
setCaller("");
};
setMessage(p_message);
setDump(p_dump);
setLevel(p_level);
setClassPackage(p_dump);
};
}
public function setLevel(_arg1:Number):void{
level = _arg1;
}
public function getCaller():String{
return (caller);
}
public function setMessage(_arg1:String):void{
message = _arg1;
}
public function getLevel():Number{
return (level);
}
public function getDump():Object{
return (dump);
}
public function setCaller(_arg1:String):void{
caller = _arg1;
}
public function setClassPackage(_arg1:Object):void{
classPackage = ObjectTools.getImmediateClassPath(_arg1);
}
public function getMessage():String{
return (message);
}
public function getClassPackage():String{
return (classPackage);
}
public function setDump(_arg1:Object):void{
dump = _arg1;
}
private function resolveCaller(_arg1:String):String{
var ary:Array;
var str = _arg1;
ary = [];
try {
str = str.split("\n").join("");
ary = str.split("\tat ");
str = ary[3];
} catch(e:Error) {
} finally {
str = "";
};
return (str);
}
}
}//package com.blitzagency.xray.logger
class LogError extends Error {
private function LogError(_arg1:String){
super(_arg1);
}
}
Section 8
//Logger (com.blitzagency.xray.logger.Logger)
package com.blitzagency.xray.logger {
public interface Logger {
function setLevel(_arg1:Number=0):void;
function debug(_arg1:Log):void;
function fatal(_arg1:Log):void;
function warn(_arg1:Log):void;
function error(_arg1:Log):void;
function log(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Object=null):void;
function info(_arg1:Log):void;
}
}//package com.blitzagency.xray.logger
Section 9
//XrayLog (com.blitzagency.xray.logger.XrayLog)
package com.blitzagency.xray.logger {
public class XrayLog {
private var logger:XrayLogger;
public function XrayLog(){
logger = XrayLogger.getInstance();
}
public function debug(_arg1:String, ... _args):void{
var _local3:Number;
if (_args.length == 0){
logger.debug(new Log(_arg1, null, XrayLogger.DEBUG));
};
_local3 = 0;
while (_local3 < _args.length) {
if (_local3 > 0){
_arg1 = "";
};
logger.debug(new Log(_arg1, _args[_local3], XrayLogger.DEBUG));
_local3++;
};
}
public function fatal(_arg1:String, ... _args):void{
var _local3:Number;
if (_args.length == 0){
logger.fatal(new Log(_arg1, null, XrayLogger.FATAL));
};
_local3 = 0;
while (_local3 < _args.length) {
if (_local3 > 0){
_arg1 = "";
};
logger.fatal(new Log(_arg1, _args[_local3], XrayLogger.FATAL));
_local3++;
};
}
public function info(_arg1:String, ... _args):void{
var _local3:Number;
if (_args.length == 0){
logger.info(new Log(_arg1, null, XrayLogger.INFO));
};
_local3 = 0;
while (_local3 < _args.length) {
if (_local3 > 0){
_arg1 = "";
};
logger.info(new Log(_arg1, _args[_local3], XrayLogger.INFO));
_local3++;
};
}
public function warn(_arg1:String, ... _args):void{
var _local3:Number;
if (_args.length == 0){
logger.warn(new Log(_arg1, null, XrayLogger.WARN));
};
_local3 = 0;
while (_local3 < _args.length) {
if (_local3 > 0){
_arg1 = "";
};
logger.warn(new Log(_arg1, _args[_local3], XrayLogger.WARN));
_local3++;
};
}
public function error(_arg1:String, ... _args):void{
var _local3:Number;
if (_args.length == 0){
logger.error(new Log(_arg1, null, XrayLogger.ERROR));
};
_local3 = 0;
while (_local3 < _args.length) {
if (_local3 > 0){
_arg1 = "";
};
logger.error(new Log(_arg1, _args[_local3], XrayLogger.ERROR));
_local3++;
};
}
}
}//package com.blitzagency.xray.logger
Section 10
//XrayLogger (com.blitzagency.xray.logger.XrayLogger)
package com.blitzagency.xray.logger {
import flash.events.*;
import flash.utils.*;
import com.blitzagency.xray.logger.util.*;
public class XrayLogger extends EventDispatcher implements Logger {
private var displayObjectRecursionDepth:Number;// = 3
private var level:Number;// = 0
private var indentation:Number;// = 0
private var objectRecursionDepth:Number;// = 254
private var filters:Array;
public static var FATAL:Number = 4;
public static var WARN:Number = 2;
public static var ERROR:Number = 3;
public static var INFO:Number = 1;
public static var DEBUG:Number = 0;
private static var _instance:XrayLogger = null;
public static var NONE:Number = 5;
public function XrayLogger(){
level = 0;
displayObjectRecursionDepth = 3;
objectRecursionDepth = 254;
indentation = 0;
filters = [];
super();
}
public function checkFilters():Boolean{
var _local1:uint;
if (filters.length == 0){
return (true);
};
_local1 = 0;
while (_local1 < filters.length) {
_local1++;
};
return (true);
}
public function debug(_arg1:Log):void{
if (_arg1.getLevel() == level){
log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 0, _arg1.getDump());
};
}
public function setIndentation(_arg1:Number=0):void{
indentation = _arg1;
}
public function error(_arg1:Log):void{
if (_arg1.getLevel() >= level){
log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 3, _arg1.getDump());
};
}
public function setLevel(_arg1:Number=0):void{
level = _arg1;
}
public function fatal(_arg1:Log):void{
if (_arg1.getLevel() >= level){
log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 4, _arg1.getDump());
};
}
public function warn(_arg1:Log):void{
if (_arg1.getLevel() >= level){
log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 2, _arg1.getDump());
};
}
public function setObjectRecursionDepth(_arg1:Number):void{
objectRecursionDepth = _arg1;
}
public function setDisplayClipRecursionDepth(_arg1:Number):void{
displayObjectRecursionDepth = _arg1;
}
public function info(_arg1:Log):void{
if (_arg1.getLevel() >= level){
log(_arg1.getMessage(), _arg1.getCaller(), _arg1.getClassPackage(), 1, _arg1.getDump());
};
}
public function log(_arg1:String, _arg2:String, _arg3:String, _arg4:Number, _arg5:Object=null):void{
var _local6:String;
var _local7:String;
var _local8:String;
var _local9:Object;
_local6 = (("(" + getTimer()) + ") ");
if (_arg3.length > 0){
_local6 = (_local6 + (_arg2 + "\n"));
};
_local6 = (_local6 + _arg1);
if (_arg1.length > 0){
Debug.trace(_local6, _arg3, _arg4);
};
if (_arg5 == null){
return;
};
_local7 = typeof(_arg5);
if ((((((((((_local7 == "string")) || ((_local7 == "number")))) || ((_local7 == "boolean")))) || ((_local7 == "undefined")))) || ((_local7 == "null")))){
Debug.trace(_arg5, _arg3, _arg4);
} else {
if (_local7 == "xml"){
Debug.trace(_arg5.toString(), _arg3, _arg4);
} else {
_local8 = ObjectTools.getImmediateClassPath(_arg5);
if ((((_local8 == "Object")) || ((_local8 == "Object.Array")))){
Debug.traceObject(_arg5, objectRecursionDepth, indentation, _arg3, _arg4);
} else {
_local9 = PropertyTools.getProperties(_arg5);
Debug.traceObject(_local9, displayObjectRecursionDepth, indentation, _arg3, _arg4);
};
};
};
}
public function setFilters(_arg1:Array):void{
filters = _arg1;
}
public static function getInstance():XrayLogger{
if (_instance == null){
_instance = new (XrayLogger);
};
return (_instance);
}
public static function resolveLevelAsName(_arg1:Number):String{
switch (_arg1){
case 0:
return ("debug");
case 1:
return ("info");
case 2:
return ("warn");
case 3:
return ("error");
case 4:
return ("fatal");
default:
return ("debug");
};
}
}
}//package com.blitzagency.xray.logger
Section 11
//swf (HighRes.swf)
package HighRes {
import flash.display.*;
public dynamic class swf extends MovieClip {
}
}//package HighRes
Section 12
//Camera3D (org.papervision3d.cameras.Camera3D)
package org.papervision3d.cameras {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
public class Camera3D extends CameraObject3D {
public var goto:Number3D;
public var target:DisplayObject3D;
public static const TYPE:String = "CAMERA3D";
public function Camera3D(_arg1:DisplayObject3D=null, _arg2:Number=2, _arg3:Number=100, _arg4:Object=null){
super(_arg2, _arg3, _arg4);
this.target = ((_arg1) || (DisplayObject3D.ZERO));
this.goto = new Number3D(this.x, this.y, this.z);
}
public function hover(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:DisplayObject3D;
var _local5:Number3D;
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;
_local4 = this.target;
_local5 = this.goto;
_local6 = 8;
switch (_arg1){
case 0:
_local7 = (_local5.x - _local4.x);
_local8 = (_local5.z - _local4.z);
_local9 = Math.atan2(_local8, _local7);
_local10 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local11 = (0.5 * _arg2);
_local12 = (_local10 * Math.cos((_local9 - _local11)));
_local13 = (_local10 * Math.sin((_local9 - _local11)));
_local14 = (_local5.y - (300 * _arg3));
this.x = (this.x - ((this.x - _local12) / _local6));
this.y = (this.y - ((this.y - _local14) / _local6));
this.z = (this.z - ((this.z - _local13) / _local6));
break;
case 1:
this.x = (this.x - ((this.x - (1000 * _arg2)) / _local6));
this.y = (this.y - ((this.y - (1000 * _arg3)) / _local6));
break;
};
}
override public function transformView(_arg1:Matrix3D=null):void{
this.lookAt(this.target);
super.transformView();
}
}
}//package org.papervision3d.cameras
Section 13
//CoordinateTools (org.papervision3d.core.components.as3.utils.CoordinateTools)
package org.papervision3d.core.components.as3.utils {
import flash.display.*;
import flash.geom.*;
public class CoordinateTools {
public static function random(_arg1:Number):Number{
return (Math.floor((Math.random() * _arg1)));
}
public static function localToLocal(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:Point=null):Point{
var _local4:Point;
_local4 = (_arg3) ? _arg3 : new Point();
_local4 = _arg1.localToGlobal(_local4);
_local4 = _arg2.globalToLocal(_local4);
return (_local4);
}
}
}//package org.papervision3d.core.components.as3.utils
Section 14
//DefaultParticleCuller (org.papervision3d.core.culling.DefaultParticleCuller)
package org.papervision3d.core.culling {
import org.papervision3d.core.geom.renderables.*;
public class DefaultParticleCuller implements IParticleCuller {
public function testParticle(_arg1:Particle):Boolean{
if (_arg1.material.invisible == false){
if (_arg1.vertex3D.vertex3DInstance.visible == true){
return (true);
};
};
return (false);
}
}
}//package org.papervision3d.core.culling
Section 15
//DefaultTriangleCuller (org.papervision3d.core.culling.DefaultTriangleCuller)
package org.papervision3d.core.culling {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
public class DefaultTriangleCuller implements ITriangleCuller {
private static var y2:Number;
private static var y1:Number;
private static var y0:Number;
private static var x0:Number;
private static var x1:Number;
private static var x2:Number;
public function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{
var _local5:MaterialObject3D;
if (((((_arg2.visible) && (_arg3.visible))) && (_arg4.visible))){
_local5 = (_arg1.material) ? _arg1.material : _arg1.instance.material;
if (_local5.invisible){
return (false);
};
x0 = _arg2.x;
y0 = _arg2.y;
x1 = _arg3.x;
y1 = _arg3.y;
x2 = _arg4.x;
y2 = _arg4.y;
if (_local5.oneSide){
if (_local5.opposite){
if ((((x2 - x0) * (y1 - y0)) - ((y2 - y0) * (x1 - x0))) > 0){
return (false);
};
} else {
if ((((x2 - x0) * (y1 - y0)) - ((y2 - y0) * (x1 - x0))) < 0){
return (false);
};
};
};
return (true);
};
return (false);
}
}
}//package org.papervision3d.core.culling
Section 16
//FrustumTestMethod (org.papervision3d.core.culling.FrustumTestMethod)
package org.papervision3d.core.culling {
public class FrustumTestMethod {
public static const BOUNDING_SPHERE:int = 0;
public static const BOUNDING_BOX:int = 1;
}
}//package org.papervision3d.core.culling
Section 17
//IObjectCuller (org.papervision3d.core.culling.IObjectCuller)
package org.papervision3d.core.culling {
import org.papervision3d.objects.*;
public interface IObjectCuller {
function testObject(_arg1:DisplayObject3D):int;
}
}//package org.papervision3d.core.culling
Section 18
//IParticleCuller (org.papervision3d.core.culling.IParticleCuller)
package org.papervision3d.core.culling {
import org.papervision3d.core.geom.renderables.*;
public interface IParticleCuller {
function testParticle(_arg1:Particle):Boolean;
}
}//package org.papervision3d.core.culling
Section 19
//ITriangleCuller (org.papervision3d.core.culling.ITriangleCuller)
package org.papervision3d.core.culling {
import org.papervision3d.core.geom.renderables.*;
public interface ITriangleCuller {
function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean;
}
}//package org.papervision3d.core.culling
Section 20
//RectangleParticleCuller (org.papervision3d.core.culling.RectangleParticleCuller)
package org.papervision3d.core.culling {
import org.papervision3d.core.geom.renderables.*;
import flash.geom.*;
public class RectangleParticleCuller implements IParticleCuller {
public var cullingRectangle:Rectangle;
private static var vInstance:Vertex3DInstance;
private static var testPoint:Point;
public function RectangleParticleCuller(_arg1:Rectangle=null){
this.cullingRectangle = _arg1;
testPoint = new Point();
}
public function testParticle(_arg1:Particle):Boolean{
vInstance = _arg1.vertex3D.vertex3DInstance;
if (_arg1.material.invisible == false){
if (vInstance.visible){
if (_arg1.renderRect.intersects(cullingRectangle)){
return (true);
};
};
};
return (false);
}
}
}//package org.papervision3d.core.culling
Section 21
//RectangleTriangleCuller (org.papervision3d.core.culling.RectangleTriangleCuller)
package org.papervision3d.core.culling {
import org.papervision3d.core.geom.renderables.*;
import flash.geom.*;
public class RectangleTriangleCuller extends DefaultTriangleCuller implements ITriangleCuller {
public var cullingRectangle:Rectangle;
private static const DEFAULT_RECT_X:Number = -((DEFAULT_RECT_W / 2));
private static const DEFAULT_RECT_W:Number = 640;
private static const DEFAULT_RECT_H:Number = 480;
private static const DEFAULT_RECT_Y:Number = -((DEFAULT_RECT_H / 2));
private static var hitRect:Rectangle = new Rectangle();
public function RectangleTriangleCuller(_arg1:Rectangle=null):void{
cullingRectangle = new Rectangle(DEFAULT_RECT_X, DEFAULT_RECT_Y, DEFAULT_RECT_W, DEFAULT_RECT_H);
super();
if (_arg1){
this.cullingRectangle = _arg1;
};
}
override public function testFace(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{
if (super.testFace(_arg1, _arg2, _arg3, _arg4)){
hitRect.x = Math.min(_arg4.x, Math.min(_arg3.x, _arg2.x));
hitRect.width = (Math.max(_arg4.x, Math.max(_arg3.x, _arg2.x)) + Math.abs(hitRect.x));
hitRect.y = Math.min(_arg4.y, Math.min(_arg3.y, _arg2.y));
hitRect.height = (Math.max(_arg4.y, Math.max(_arg3.y, _arg2.y)) + Math.abs(hitRect.y));
return (cullingRectangle.intersects(hitRect));
};
return (false);
}
}
}//package org.papervision3d.core.culling
Section 22
//ViewportObjectFilter (org.papervision3d.core.culling.ViewportObjectFilter)
package org.papervision3d.core.culling {
import org.papervision3d.objects.*;
import flash.utils.*;
public class ViewportObjectFilter implements IObjectCuller {
protected var _mode:int;
protected var objects:Dictionary;
public function ViewportObjectFilter(_arg1:int):void{
this.mode = _arg1;
init();
}
public function addObject(_arg1:DisplayObject3D):void{
objects[_arg1] = _arg1;
}
public function removeObject(_arg1:DisplayObject3D):void{
delete objects[_arg1];
}
public function set mode(_arg1:int):void{
_mode = _arg1;
}
public function get mode():int{
return (_mode);
}
private function init():void{
objects = new Dictionary(true);
}
public function testObject(_arg1:DisplayObject3D):int{
if (objects[_arg1]){
if (_mode == ViewportObjectFilterMode.INCLUSIVE){
return (1);
};
if (_mode == ViewportObjectFilterMode.EXCLUSIVE){
return (0);
};
} else {
if (_mode == ViewportObjectFilterMode.INCLUSIVE){
return (0);
};
if (_mode == ViewportObjectFilterMode.EXCLUSIVE){
return (1);
};
};
return (0);
}
public function destroy():void{
objects = null;
}
}
}//package org.papervision3d.core.culling
Section 23
//ViewportObjectFilterMode (org.papervision3d.core.culling.ViewportObjectFilterMode)
package org.papervision3d.core.culling {
public class ViewportObjectFilterMode {
public static const INCLUSIVE:int = 0;
public static const EXCLUSIVE:int = 1;
}
}//package org.papervision3d.core.culling
Section 24
//UserData (org.papervision3d.core.data.UserData)
package org.papervision3d.core.data {
public class UserData {
public var data;
public function UserData(_arg1=null){
this.data = _arg1;
}
}
}//package org.papervision3d.core.data
Section 25
//AbstractRenderable (org.papervision3d.core.geom.renderables.AbstractRenderable)
package org.papervision3d.core.geom.renderables {
import org.papervision3d.core.render.command.*;
import org.papervision3d.core.data.*;
public class AbstractRenderable implements IRenderable {
public var _userData:UserData;
public function get userData():UserData{
return (_userData);
}
public function set userData(_arg1:UserData):void{
_userData = _arg1;
}
public function getRenderListItem():IRenderListItem{
return (null);
}
}
}//package org.papervision3d.core.geom.renderables
Section 26
//IRenderable (org.papervision3d.core.geom.renderables.IRenderable)
package org.papervision3d.core.geom.renderables {
import org.papervision3d.core.render.command.*;
public interface IRenderable {
function getRenderListItem():IRenderListItem;
}
}//package org.papervision3d.core.geom.renderables
Section 27
//Particle (org.papervision3d.core.geom.renderables.Particle)
package org.papervision3d.core.geom.renderables {
import org.papervision3d.core.render.command.*;
import flash.geom.*;
import org.papervision3d.materials.special.*;
import org.papervision3d.core.geom.*;
public class Particle extends AbstractRenderable implements IRenderable {
public var size:Number;
public var renderScale:Number;
public var renderCommand:RenderParticle;
public var renderRect:Rectangle;
public var instance:Particles;
public var material:ParticleMaterial;
public var vertex3D:Vertex3D;
public function Particle(_arg1:ParticleMaterial, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){
this.material = _arg1;
this.size = _arg2;
this.renderCommand = new RenderParticle(this);
this.renderRect = new Rectangle();
vertex3D = new Vertex3D(_arg3, _arg4, _arg5);
}
public function get y():Number{
return (vertex3D.y);
}
public function updateRenderRect():void{
material.updateRenderRect(this);
}
override public function getRenderListItem():IRenderListItem{
return (renderCommand);
}
public function set z(_arg1:Number):void{
vertex3D.z = _arg1;
}
public function set x(_arg1:Number):void{
vertex3D.x = _arg1;
}
public function set y(_arg1:Number):void{
vertex3D.y = _arg1;
}
public function get x():Number{
return (vertex3D.x);
}
public function get z():Number{
return (vertex3D.z);
}
}
}//package org.papervision3d.core.geom.renderables
Section 28
//Triangle3D (org.papervision3d.core.geom.renderables.Triangle3D)
package org.papervision3d.core.geom.renderables {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.render.command.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
public class Triangle3D extends AbstractRenderable implements IRenderable {
public var vertices:Array;
public var v1:Vertex3D;
public var face3DInstance:Triangle3DInstance;
private var _uvArray:Array;
public var id:Number;
public var material:MaterialObject3D;
public var faceNormal:Number3D;
public var instance:DisplayObject3D;
public var screenZ:Number;
public var uv0:NumberUV;
public var uv1:NumberUV;
public var _materialName:String;
public var visible:Boolean;
public var renderCommand:RenderTriangle;
public var uv2:NumberUV;
public var v0:Vertex3D;
public var v2:Vertex3D;
private static var _totalFaces:Number = 0;
public function Triangle3D(_arg1:DisplayObject3D, _arg2:Array, _arg3:MaterialObject3D=null, _arg4:Array=null){
this.instance = _arg1;
this.renderCommand = new RenderTriangle(this);
face3DInstance = new Triangle3DInstance(this, _arg1);
if (((_arg2) && ((_arg2.length == 3)))){
this.vertices = _arg2;
v0 = _arg2[0];
v1 = _arg2[1];
v2 = _arg2[2];
createNormal();
};
this.material = _arg3;
this.uv = _arg4;
this.id = _totalFaces++;
}
override public function getRenderListItem():IRenderListItem{
return (renderCommand);
}
public function set uv(_arg1:Array):void{
if (_arg1){
uv0 = NumberUV(_arg1[0]);
uv1 = NumberUV(_arg1[1]);
uv2 = NumberUV(_arg1[2]);
};
_uvArray = _arg1;
}
public function createNormal():void{
var _local1:Number3D;
var _local2:Number3D;
var _local3:Number3D;
var _local4:Number3D;
var _local5:Number3D;
_local1 = v0.toNumber3D();
_local2 = v1.toNumber3D();
_local3 = v2.toNumber3D();
_local4 = Number3D.sub(_local2, _local1);
_local5 = Number3D.sub(_local3, _local1);
faceNormal = Number3D.cross(_local4, _local5);
faceNormal.normalize();
}
public function get uv():Array{
return (_uvArray);
}
public function updateVertices():void{
v0 = vertices[0];
v1 = vertices[1];
v2 = vertices[2];
}
}
}//package org.papervision3d.core.geom.renderables
Section 29
//Triangle3DInstance (org.papervision3d.core.geom.renderables.Triangle3DInstance)
package org.papervision3d.core.geom.renderables {
import flash.display.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
public class Triangle3DInstance {
public var container:Sprite;
public var faceNormal:Number3D;
public var screenZ:Number;
public var visible:Boolean;// = false
public var instance:DisplayObject3D;
public function Triangle3DInstance(_arg1:Triangle3D, _arg2:DisplayObject3D){
visible = false;
super();
this.instance = _arg2;
faceNormal = new Number3D();
}
}
}//package org.papervision3d.core.geom.renderables
Section 30
//Vertex3D (org.papervision3d.core.geom.renderables.Vertex3D)
package org.papervision3d.core.geom.renderables {
import org.papervision3d.core.render.command.*;
import org.papervision3d.core.math.*;
import flash.utils.*;
public class Vertex3D extends AbstractRenderable implements IRenderable {
public var vertex3DInstance:Vertex3DInstance;
public var extra:Object;
public var normal:Number3D;
public var connectedFaces:Dictionary;
public var x:Number;
public var y:Number;
public var z:Number;
public function Vertex3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.vertex3DInstance = new Vertex3DInstance();
this.normal = new Number3D();
this.connectedFaces = new Dictionary();
}
override public function getRenderListItem():IRenderListItem{
return (null);
}
public function toNumber3D():Number3D{
return (new Number3D(x, y, z));
}
public function clone():Vertex3D{
var _local1:Vertex3D;
_local1 = new Vertex3D(x, y, z);
_local1.extra = extra;
_local1.vertex3DInstance = vertex3DInstance.clone();
_local1.normal = normal.clone();
return (_local1);
}
public function calculateNormal():void{
var _local1:Triangle3D;
var _local2:Number;
normal = new Number3D();
_local2 = 0;
for each (_local1 in connectedFaces) {
_local2++;
normal = Number3D.add(_local1.faceNormal, normal);
};
normal.x = (normal.x / _local2);
normal.y = (normal.y / _local2);
normal.z = (normal.z / _local2);
normal.normalize();
}
}
}//package org.papervision3d.core.geom.renderables
Section 31
//Vertex3DInstance (org.papervision3d.core.geom.renderables.Vertex3DInstance)
package org.papervision3d.core.geom.renderables {
import org.papervision3d.core.math.*;
public class Vertex3DInstance {
public var visible:Boolean;
public var normal:Number3D;
public var extra:Object;
public var x:Number;
public var y:Number;
public var z:Number;
public function Vertex3DInstance(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.visible = false;
this.normal = new Number3D();
}
public function clone():Vertex3DInstance{
var _local1:Vertex3DInstance;
_local1 = new Vertex3DInstance(x, y, z);
_local1.visible = visible;
_local1.extra = extra;
return (_local1);
}
public static function cross(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Number{
return (((_arg1.x * _arg2.y) - (_arg2.x * _arg1.y)));
}
public static function dot(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Number{
return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
}
public static function sub(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance):Vertex3DInstance{
return (new Vertex3DInstance((_arg2.x - _arg1.x), (_arg2.y - _arg1.y)));
}
}
}//package org.papervision3d.core.geom.renderables
Section 32
//Particles (org.papervision3d.core.geom.Particles)
package org.papervision3d.core.geom {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.objects.*;
public class Particles extends Vertices3D {
public var particles:Array;
private var vertices:Array;
public function Particles(_arg1:String="VertexParticles"){
this.vertices = new Array();
this.particles = new Array();
super(vertices, _arg1);
}
override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{
var _local3:Particle;
var _local4:Number;
super.project(_arg1, _arg2);
_local4 = (_arg2.camera.focus * _arg2.camera.zoom);
for each (_local3 in particles) {
_local3.renderScale = (_local4 / (_arg2.camera.focus + _local3.vertex3D.vertex3DInstance.z));
_local3.updateRenderRect();
if (_arg2.viewPort.particleCuller.testParticle(_local3)){
_local3.renderCommand.screenDepth = _local3.vertex3D.vertex3DInstance.z;
_arg2.renderer.addToRenderList(_local3.renderCommand);
} else {
_arg2.renderStatistics.culledParticles++;
};
};
return (1);
}
public function removeParticle(_arg1:Particle):void{
_arg1.instance = null;
particles.splice(particles.indexOf(_arg1, 0));
vertices.splice(vertices.indexOf(_arg1.vertex3D, 0));
}
public function addParticle(_arg1:Particle):void{
_arg1.instance = this;
particles.push(_arg1);
vertices.push(_arg1.vertex3D);
}
public function removeAllParticles():void{
particles = new Array();
vertices = new Array();
geometry.vertices = vertices;
}
}
}//package org.papervision3d.core.geom
Section 33
//TriangleMesh3D (org.papervision3d.core.geom.TriangleMesh3D)
package org.papervision3d.core.geom {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.render.command.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
import org.papervision3d.core.culling.*;
import org.papervision3d.core.render.draw.*;
import flash.utils.*;
public class TriangleMesh3D extends Vertices3D {
public function TriangleMesh3D(_arg1:MaterialObject3D, _arg2:Array, _arg3:Array, _arg4:String=null, _arg5:Object=null){
super(_arg2, _arg4, _arg5);
this.geometry.faces = ((_arg3) || (new Array()));
this.material = ((_arg1) || (MaterialObject3D.DEFAULT));
}
override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{
var _local3:Array;
var _local4:Number;
var _local5:Number;
var _local6:ITriangleCuller;
var _local7:Vertex3DInstance;
var _local8:Vertex3DInstance;
var _local9:Vertex3DInstance;
var _local10:Triangle3DInstance;
var _local11:Triangle3D;
var _local12:MaterialObject3D;
var _local13:RenderTriangle;
super.project(_arg1, _arg2);
if (!this.culled){
_local3 = this.geometry.faces;
_local4 = 0;
_local5 = 0;
_local6 = _arg2.triangleCuller;
for each (_local11 in _local3) {
_local12 = (_local11.material) ? _local11.material : material;
_local10 = _local11.face3DInstance;
_local7 = _local11.v0.vertex3DInstance;
_local8 = _local11.v1.vertex3DInstance;
_local9 = _local11.v2.vertex3DInstance;
if ((_local10.visible = _local6.testFace(_local11, _local7, _local8, _local9))){
_local4 = (_local4 + (_local10.screenZ = (((_local7.z + _local8.z) + _local9.z) / 3)));
_local13 = _local11.renderCommand;
_local5++;
_local13.renderer = (_local12 as ITriangleDrawer);
_local13.screenDepth = _local10.screenZ;
_arg2.renderer.addToRenderList(_local13);
} else {
_arg2.renderStatistics.culledTriangles++;
};
};
return ((this.screenZ = (_local4 / _local5)));
//unresolved jump
};
return (0);
}
override public function set material(_arg1:MaterialObject3D):void{
var _local2:Triangle3D;
super.material = _arg1;
for each (_local2 in geometry.faces) {
_local2.material = _arg1;
};
}
public function mergeVertices():void{
var _local1:Dictionary;
var _local2:Array;
var _local3:Vertex3D;
var _local4:Triangle3D;
var _local5:Vertex3D;
_local1 = new Dictionary();
_local2 = new Array();
for each (_local3 in this.geometry.vertices) {
for each (_local5 in _local1) {
if ((((((_local3.x == _local5.x)) && ((_local3.y == _local5.y)))) && ((_local3.z == _local5.z)))){
_local1[_local3] = _local5;
break;
};
};
if (!_local1[_local3]){
_local1[_local3] = _local3;
_local2.push(_local3);
};
};
this.geometry.vertices = _local2;
for each (_local4 in geometry.faces) {
_local4.v0 = _local1[_local4.v0];
_local4.v1 = _local1[_local4.v1];
_local4.v2 = _local1[_local4.v2];
};
}
public function quarterFaces():void{
var _local1:Array;
var _local2:Array;
var _local3:Array;
var _local4:Triangle3D;
var _local5:int;
var _local6:Vertex3D;
var _local7:Vertex3D;
var _local8:Vertex3D;
var _local9:Vertex3D;
var _local10:Vertex3D;
var _local11:Vertex3D;
var _local12:NumberUV;
var _local13:NumberUV;
var _local14:NumberUV;
var _local15:NumberUV;
var _local16:NumberUV;
var _local17:NumberUV;
var _local18:Triangle3D;
var _local19:Triangle3D;
var _local20:Triangle3D;
var _local21:Triangle3D;
_local1 = new Array();
_local2 = new Array();
_local3 = this.geometry.faces;
_local5 = _local3.length;
while ((_local4 = _local3[--_local5])) {
_local6 = _local4.v0;
_local7 = _local4.v1;
_local8 = _local4.v2;
_local9 = new Vertex3D(((_local6.x + _local7.x) / 2), ((_local6.y + _local7.y) / 2), ((_local6.z + _local7.z) / 2));
_local10 = new Vertex3D(((_local7.x + _local8.x) / 2), ((_local7.y + _local8.y) / 2), ((_local7.z + _local8.z) / 2));
_local11 = new Vertex3D(((_local8.x + _local6.x) / 2), ((_local8.y + _local6.y) / 2), ((_local8.z + _local6.z) / 2));
this.geometry.vertices.push(_local9, _local10, _local11);
_local12 = _local4.uv[0];
_local13 = _local4.uv[1];
_local14 = _local4.uv[2];
_local15 = new NumberUV(((_local12.u + _local13.u) / 2), ((_local12.v + _local13.v) / 2));
_local16 = new NumberUV(((_local13.u + _local14.u) / 2), ((_local13.v + _local14.v) / 2));
_local17 = new NumberUV(((_local14.u + _local12.u) / 2), ((_local14.v + _local12.v) / 2));
_local18 = new Triangle3D(this, [_local6, _local9, _local11], _local4.material, [_local12, _local15, _local17]);
_local19 = new Triangle3D(this, [_local9, _local7, _local10], _local4.material, [_local15, _local13, _local16]);
_local20 = new Triangle3D(this, [_local11, _local10, _local8], _local4.material, [_local17, _local16, _local14]);
_local21 = new Triangle3D(this, [_local9, _local10, _local11], _local4.material, [_local15, _local16, _local17]);
_local2.push(_local18, _local19, _local20, _local21);
};
this.geometry.faces = _local2;
this.mergeVertices();
this.geometry.ready = true;
}
override public function clone():DisplayObject3D{
var _local1:DisplayObject3D;
var _local2:TriangleMesh3D;
_local1 = super.clone();
_local2 = new TriangleMesh3D(this.material, [], [], _local1.name);
if (this.materials){
_local2.materials = this.materials.clone();
};
if (_local1.geometry){
_local2.geometry = _local1.geometry.clone(_local2);
};
_local2.copyTransform(this.transform);
return (_local2);
}
public function projectTexture(_arg1:String="x", _arg2:String="y"):void{
var _local3:Array;
var _local4:Object;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:MaterialObject3D;
var _local10:String;
var _local11:Triangle3D;
var _local12:Array;
var _local13:Vertex3D;
var _local14:Vertex3D;
var _local15:Vertex3D;
var _local16:NumberUV;
var _local17:NumberUV;
var _local18:NumberUV;
_local3 = this.geometry.faces;
_local4 = this.boundingBox();
_local5 = _local4.min[_arg1];
_local6 = _local4.size[_arg1];
_local7 = _local4.min[_arg2];
_local8 = _local4.size[_arg2];
_local9 = this.material;
for (_local10 in _local3) {
_local11 = _local3[Number(_local10)];
_local12 = _local11.vertices;
_local13 = _local12[0];
_local14 = _local12[1];
_local15 = _local12[2];
_local16 = new NumberUV(((_local13[_arg1] - _local5) / _local6), ((_local13[_arg2] - _local7) / _local8));
_local17 = new NumberUV(((_local14[_arg1] - _local5) / _local6), ((_local14[_arg2] - _local7) / _local8));
_local18 = new NumberUV(((_local15[_arg1] - _local5) / _local6), ((_local15[_arg2] - _local7) / _local8));
_local11.uv = [_local16, _local17, _local18];
};
}
}
}//package org.papervision3d.core.geom
Section 34
//Vertices3D (org.papervision3d.core.geom.Vertices3D)
package org.papervision3d.core.geom {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import flash.geom.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
import org.papervision3d.core.culling.*;
public class Vertices3D extends DisplayObject3D {
public function Vertices3D(_arg1:Array, _arg2:String=null, _arg3:Object=null){
super(_arg2, new GeometryObject3D(), _arg3);
this.geometry.vertices = ((_arg1) || (new Array()));
}
public function projectFrustum(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{
var _local3:Matrix3D;
var _local4:Rectangle;
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: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:Vertex3D;
var _local27:Vertex3DInstance;
var _local28:Array;
var _local29:int;
_local3 = this.view;
_local4 = _arg2.camera.viewport;
_local5 = _local3.n11;
_local6 = _local3.n12;
_local7 = _local3.n13;
_local8 = _local3.n21;
_local9 = _local3.n22;
_local10 = _local3.n23;
_local11 = _local3.n31;
_local12 = _local3.n32;
_local13 = _local3.n33;
_local14 = _local3.n41;
_local15 = _local3.n42;
_local16 = _local3.n43;
_local24 = (_local4.width / 2);
_local25 = (_local4.height / 2);
_local28 = this.geometry.vertices;
_local29 = _local28.length;
while ((_local26 = _local28[--_local29])) {
_local17 = _local26.x;
_local18 = _local26.y;
_local19 = _local26.z;
_local22 = ((((_local17 * _local11) + (_local18 * _local12)) + (_local19 * _local13)) + _local3.n34);
_local23 = ((((_local17 * _local14) + (_local18 * _local15)) + (_local19 * _local16)) + _local3.n44);
_local27 = _local26.vertex3DInstance;
_local22 = (_local22 / _local23);
if ((_local27.visible = (((_local22 > 0)) && ((_local22 < 1))))){
_local20 = (((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local3.n14) / _local23);
_local21 = (((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local3.n24) / _local23);
_local27.x = (_local20 * _local24);
_local27.y = (_local21 * _local25);
_local27.z = (_local22 * _local23);
};
};
return (0);
}
override public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{
var _local3:Matrix3D;
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:Number;
var _local18:Number;
var _local19:Vertex3D;
var _local20:Vertex3DInstance;
var _local21:Number;
var _local22:Array;
var _local23:int;
var _local24:Number;
var _local25:Number;
super.project(_arg1, _arg2);
if (this.culled){
return (0);
};
if ((_arg2.camera is IObjectCuller)){
return (projectFrustum(_arg1, _arg2));
};
_local3 = this.view;
_local4 = _local3.n11;
_local5 = _local3.n12;
_local6 = _local3.n13;
_local7 = _local3.n21;
_local8 = _local3.n22;
_local9 = _local3.n23;
_local10 = _local3.n31;
_local11 = _local3.n32;
_local12 = _local3.n33;
_local22 = this.geometry.vertices;
_local23 = _local22.length;
_local24 = _arg2.camera.focus;
_local25 = (_local24 * _arg2.camera.zoom);
while ((_local19 = _local22[--_local23])) {
_local13 = _local19.x;
_local14 = _local19.y;
_local15 = _local19.z;
_local18 = ((((_local13 * _local10) + (_local14 * _local11)) + (_local15 * _local12)) + _local3.n34);
_local20 = _local19.vertex3DInstance;
if ((_local20.visible = (_local18 > 0))){
_local16 = ((((_local13 * _local4) + (_local14 * _local5)) + (_local15 * _local6)) + _local3.n14);
_local17 = ((((_local13 * _local7) + (_local14 * _local8)) + (_local15 * _local9)) + _local3.n24);
_local21 = (_local25 / (_local24 + _local18));
_local20.x = (_local16 * _local21);
_local20.y = (_local17 * _local21);
_local20.z = _local18;
};
};
return (0);
}
override public function clone():DisplayObject3D{
var _local1:DisplayObject3D;
var _local2:Vertices3D;
_local1 = super.clone();
_local2 = new Vertices3D(null, _local1.name);
_local2.material = _local1.material;
if (_local1.materials){
_local2.materials = _local1.materials.clone();
};
if (this.geometry){
_local2.geometry = this.geometry.clone(_local2);
};
_local2.copyTransform(this.transform);
return (_local2);
}
public function transformVertices(_arg1:Matrix3D):void{
var _local2:Number;
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:Array;
var _local15:int;
var _local16:Vertex3D;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
_local2 = _arg1.n11;
_local3 = _arg1.n12;
_local4 = _arg1.n13;
_local5 = _arg1.n21;
_local6 = _arg1.n22;
_local7 = _arg1.n23;
_local8 = _arg1.n31;
_local9 = _arg1.n32;
_local10 = _arg1.n33;
_local11 = _arg1.n14;
_local12 = _arg1.n24;
_local13 = _arg1.n34;
_local14 = this.geometry.vertices;
_local15 = _local14.length;
while ((_local16 = _local14[--_local15])) {
_local17 = _local16.x;
_local18 = _local16.y;
_local19 = _local16.z;
_local20 = ((((_local17 * _local2) + (_local18 * _local3)) + (_local19 * _local4)) + _local11);
_local21 = ((((_local17 * _local5) + (_local18 * _local6)) + (_local19 * _local7)) + _local12);
_local22 = ((((_local17 * _local8) + (_local18 * _local9)) + (_local19 * _local10)) + _local13);
_local16.x = _local20;
_local16.y = _local21;
_local16.z = _local22;
};
}
public function boundingBox():Object{
var _local1:Array;
var _local2:Object;
var _local3:Vertex3D;
_local1 = this.geometry.vertices;
_local2 = new Object();
_local2.min = new Number3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
_local2.max = new Number3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);
_local2.size = new Number3D();
for each (_local3 in _local1) {
_local2.min.x = Math.min(_local3.x, _local2.min.x);
_local2.min.y = Math.min(_local3.y, _local2.min.y);
_local2.min.z = Math.min(_local3.z, _local2.min.z);
_local2.max.x = Math.max(_local3.x, _local2.max.x);
_local2.max.y = Math.max(_local3.y, _local2.max.y);
_local2.max.z = Math.max(_local3.z, _local2.max.z);
};
_local2.size.x = (_local2.max.x - _local2.min.x);
_local2.size.y = (_local2.max.y - _local2.min.y);
_local2.size.z = (_local2.max.z - _local2.min.z);
return (_local2);
}
}
}//package org.papervision3d.core.geom
Section 35
//AbstractLightShadeMaterial (org.papervision3d.core.material.AbstractLightShadeMaterial)
package org.papervision3d.core.material {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.math.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.*;
import org.papervision3d.core.render.material.*;
import org.papervision3d.core.render.draw.*;
import flash.utils.*;
public class AbstractLightShadeMaterial extends TriangleMaterial implements ITriangleDrawer, IUpdateBeforeMaterial {
public var lightMatrices:Dictionary;
private var _light:LightObject3D;
protected static var lightMatrix:Matrix3D;
public function AbstractLightShadeMaterial(){
init();
}
public function get light():LightObject3D{
return (_light);
}
protected function init():void{
lightMatrices = new Dictionary();
}
public function set light(_arg1:LightObject3D):void{
_light = _arg1;
}
public function updateBeforeRender(_arg1:RenderSessionData):void{
var _local2:DisplayObject3D;
for each (_local2 in objects) {
lightMatrices[_local2] = LightMatrix.getLightMatrix(light, _local2, _arg1);
};
}
}
}//package org.papervision3d.core.material
Section 36
//AbstractSmoothShadeMaterial (org.papervision3d.core.material.AbstractSmoothShadeMaterial)
package org.papervision3d.core.material {
import flash.geom.*;
import org.papervision3d.core.render.material.*;
import org.papervision3d.core.render.draw.*;
public class AbstractSmoothShadeMaterial extends AbstractLightShadeMaterial implements ITriangleDrawer, IUpdateBeforeMaterial {
protected var triMatrix:Matrix;
protected var transformMatrix:Matrix;
override protected function init():void{
super.init();
transformMatrix = new Matrix();
triMatrix = new Matrix();
}
}
}//package org.papervision3d.core.material
Section 37
//TriangleMaterial (org.papervision3d.core.material.TriangleMaterial)
package org.papervision3d.core.material {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.core.render.draw.*;
public class TriangleMaterial extends MaterialObject3D implements ITriangleDrawer {
override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{
}
}
}//package org.papervision3d.core.material
Section 38
//AxisAlignedBoundingBox (org.papervision3d.core.math.AxisAlignedBoundingBox)
package org.papervision3d.core.math {
import org.papervision3d.core.geom.renderables.*;
public class AxisAlignedBoundingBox {
public var minX:Number;
public var minY:Number;
public var minZ:Number;
public var maxX:Number;
public var maxY:Number;
protected var _vertices:Array;
public var maxZ:Number;
public function AxisAlignedBoundingBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
this.minX = _arg1;
this.minY = _arg2;
this.minZ = _arg3;
this.maxX = _arg4;
this.maxY = _arg5;
this.maxZ = _arg6;
createBoxVertices();
}
protected function createBoxVertices():void{
_vertices = new Array();
_vertices.push(new Vertex3D(minX, minY, minZ));
_vertices.push(new Vertex3D(minX, minY, maxZ));
_vertices.push(new Vertex3D(minX, maxY, minZ));
_vertices.push(new Vertex3D(minX, maxY, maxZ));
_vertices.push(new Vertex3D(maxX, minY, minZ));
_vertices.push(new Vertex3D(maxX, minY, maxZ));
_vertices.push(new Vertex3D(maxX, maxY, minZ));
_vertices.push(new Vertex3D(maxX, maxY, maxZ));
}
public function getBoxVertices():Array{
return (_vertices);
}
public static function createFromVertices(_arg1:Array):AxisAlignedBoundingBox{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Vertex3D;
_local2 = 0;
_local3 = 0;
_local4 = 0;
_local5 = 0;
_local6 = 0;
_local7 = 0;
for each (_local8 in _arg1) {
_local2 = ((_local8.x)<_local2) ? _local8.x : _local2;
_local4 = ((_local8.y)<_local4) ? _local8.y : _local4;
_local6 = ((_local8.z)<_local6) ? _local8.z : _local6;
_local3 = ((_local8.x)>_local3) ? _local8.x : _local3;
_local5 = ((_local8.y)>_local5) ? _local8.y : _local5;
_local7 = ((_local8.z)>_local7) ? _local8.z : _local7;
};
return (new AxisAlignedBoundingBox(_local2, _local4, _local6, _local3, _local5, _local7));
}
}
}//package org.papervision3d.core.math
Section 39
//BoundingSphere (org.papervision3d.core.math.BoundingSphere)
package org.papervision3d.core.math {
import org.papervision3d.core.geom.renderables.*;
public class BoundingSphere {
public var maxDistance:Number;
public var radius:Number;
public function BoundingSphere(_arg1:Number){
this.maxDistance = _arg1;
this.radius = Math.sqrt(_arg1);
}
public static function getFromVertices(_arg1:Array):BoundingSphere{
var _local2:Number;
var _local3:Number;
var _local4:Vertex3D;
_local2 = 0;
for each (_local4 in _arg1) {
_local3 = (((_local4.x * _local4.x) + (_local4.y * _local4.y)) + (_local4.z * _local4.z));
_local2 = ((_local3)>_local2) ? _local3 : _local2;
};
return (new BoundingSphere(_local2));
}
}
}//package org.papervision3d.core.math
Section 40
//Matrix3D (org.papervision3d.core.math.Matrix3D)
package org.papervision3d.core.math {
public class Matrix3D {
public var n31:Number;
public var n32:Number;
public var n11:Number;
public var n13:Number;
public var n14:Number;
public var n33:Number;
public var n12:Number;
public var n42:Number;
public var n21:Number;
public var n22:Number;
public var n23:Number;
public var n24:Number;
public var n34:Number;
public var n41:Number;
public var n43:Number;
public var n44:Number;
private static var _cos:Function = Math.cos;
private static var _sin:Function = Math.sin;
private static var temp:Matrix3D = Matrix3D.IDENTITY;
private static var n3Di:Number3D = Number3D.ZERO;
private static var n3Dj:Number3D = Number3D.ZERO;
private static var n3Dk:Number3D = Number3D.ZERO;
private static var toDEGREES:Number = 57.2957795130823;
private static var toRADIANS:Number = 0.0174532925199433;
public function Matrix3D(_arg1:Array=null){
reset(_arg1);
}
public function calculateMultiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):void{
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:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
_local3 = _arg1.n11;
_local4 = _arg2.n11;
_local5 = _arg1.n21;
_local6 = _arg2.n21;
_local7 = _arg1.n31;
_local8 = _arg2.n31;
_local9 = _arg1.n12;
_local10 = _arg2.n12;
_local11 = _arg1.n22;
_local12 = _arg2.n22;
_local13 = _arg1.n32;
_local14 = _arg2.n32;
_local15 = _arg1.n13;
_local16 = _arg2.n13;
_local17 = _arg1.n23;
_local18 = _arg2.n23;
_local19 = _arg1.n33;
_local20 = _arg2.n33;
this.n11 = (((_local3 * _local4) + (_local9 * _local6)) + (_local15 * _local8));
this.n12 = (((_local3 * _local10) + (_local9 * _local12)) + (_local15 * _local14));
this.n13 = (((_local3 * _local16) + (_local9 * _local18)) + (_local15 * _local20));
this.n21 = (((_local5 * _local4) + (_local11 * _local6)) + (_local17 * _local8));
this.n22 = (((_local5 * _local10) + (_local11 * _local12)) + (_local17 * _local14));
this.n23 = (((_local5 * _local16) + (_local11 * _local18)) + (_local17 * _local20));
this.n31 = (((_local7 * _local4) + (_local13 * _local6)) + (_local19 * _local8));
this.n32 = (((_local7 * _local10) + (_local13 * _local12)) + (_local19 * _local14));
this.n33 = (((_local7 * _local16) + (_local13 * _local18)) + (_local19 * _local20));
}
public function calculateMultiply4x4(_arg1:Matrix3D, _arg2:Matrix3D):void{
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: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 _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
_local3 = _arg1.n11;
_local4 = _arg2.n11;
_local5 = _arg1.n21;
_local6 = _arg2.n21;
_local7 = _arg1.n31;
_local8 = _arg2.n31;
_local9 = _arg1.n41;
_local10 = _arg2.n41;
_local11 = _arg1.n12;
_local12 = _arg2.n12;
_local13 = _arg1.n22;
_local14 = _arg2.n22;
_local15 = _arg1.n32;
_local16 = _arg2.n32;
_local17 = _arg1.n42;
_local18 = _arg2.n42;
_local19 = _arg1.n13;
_local20 = _arg2.n13;
_local21 = _arg1.n23;
_local22 = _arg2.n23;
_local23 = _arg1.n33;
_local24 = _arg2.n33;
_local25 = _arg1.n43;
_local26 = _arg2.n43;
_local27 = _arg1.n14;
_local28 = _arg2.n14;
_local29 = _arg1.n24;
_local30 = _arg2.n24;
_local31 = _arg1.n34;
_local32 = _arg2.n34;
_local33 = _arg1.n44;
_local34 = _arg2.n44;
this.n11 = (((_local3 * _local4) + (_local11 * _local6)) + (_local19 * _local8));
this.n12 = (((_local3 * _local12) + (_local11 * _local14)) + (_local19 * _local16));
this.n13 = (((_local3 * _local20) + (_local11 * _local22)) + (_local19 * _local24));
this.n14 = ((((_local3 * _local28) + (_local11 * _local30)) + (_local19 * _local32)) + _local27);
this.n21 = (((_local5 * _local4) + (_local13 * _local6)) + (_local21 * _local8));
this.n22 = (((_local5 * _local12) + (_local13 * _local14)) + (_local21 * _local16));
this.n23 = (((_local5 * _local20) + (_local13 * _local22)) + (_local21 * _local24));
this.n24 = ((((_local5 * _local28) + (_local13 * _local30)) + (_local21 * _local32)) + _local29);
this.n31 = (((_local7 * _local4) + (_local15 * _local6)) + (_local23 * _local8));
this.n32 = (((_local7 * _local12) + (_local15 * _local14)) + (_local23 * _local16));
this.n33 = (((_local7 * _local20) + (_local15 * _local22)) + (_local23 * _local24));
this.n34 = ((((_local7 * _local28) + (_local15 * _local30)) + (_local23 * _local32)) + _local31);
this.n41 = (((_local9 * _local4) + (_local17 * _local6)) + (_local25 * _local8));
this.n42 = (((_local9 * _local12) + (_local17 * _local14)) + (_local25 * _local16));
this.n43 = (((_local9 * _local20) + (_local17 * _local22)) + (_local25 * _local24));
this.n44 = ((((_local9 * _local28) + (_local17 * _local30)) + (_local25 * _local32)) + _local33);
}
public function get det():Number{
return ((((((this.n11 * this.n22) - (this.n21 * this.n12)) * this.n33) - (((this.n11 * this.n32) - (this.n31 * this.n12)) * this.n23)) + (((this.n21 * this.n32) - (this.n31 * this.n22)) * this.n13)));
}
public function copy(_arg1:Matrix3D):Matrix3D{
this.n11 = _arg1.n11;
this.n12 = _arg1.n12;
this.n13 = _arg1.n13;
this.n14 = _arg1.n14;
this.n21 = _arg1.n21;
this.n22 = _arg1.n22;
this.n23 = _arg1.n23;
this.n24 = _arg1.n24;
this.n31 = _arg1.n31;
this.n32 = _arg1.n32;
this.n33 = _arg1.n33;
this.n34 = _arg1.n34;
return (this);
}
public function copy3x3(_arg1:Matrix3D):Matrix3D{
this.n11 = _arg1.n11;
this.n12 = _arg1.n12;
this.n13 = _arg1.n13;
this.n21 = _arg1.n21;
this.n22 = _arg1.n22;
this.n23 = _arg1.n23;
this.n31 = _arg1.n31;
this.n32 = _arg1.n32;
this.n33 = _arg1.n33;
return (this);
}
public function calculateAdd(_arg1:Matrix3D, _arg2:Matrix3D):void{
this.n11 = (_arg1.n11 + _arg2.n11);
this.n12 = (_arg1.n12 + _arg2.n12);
this.n13 = (_arg1.n13 + _arg2.n13);
this.n14 = (_arg1.n14 + _arg2.n14);
this.n21 = (_arg1.n21 + _arg2.n21);
this.n22 = (_arg1.n22 + _arg2.n22);
this.n23 = (_arg1.n23 + _arg2.n23);
this.n24 = (_arg1.n24 + _arg2.n24);
this.n31 = (_arg1.n31 + _arg2.n31);
this.n32 = (_arg1.n32 + _arg2.n32);
this.n33 = (_arg1.n33 + _arg2.n33);
this.n34 = (_arg1.n34 + _arg2.n34);
}
public function calculateMultiply(_arg1:Matrix3D, _arg2:Matrix3D):void{
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: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;
_local3 = _arg1.n11;
_local4 = _arg2.n11;
_local5 = _arg1.n21;
_local6 = _arg2.n21;
_local7 = _arg1.n31;
_local8 = _arg2.n31;
_local9 = _arg1.n12;
_local10 = _arg2.n12;
_local11 = _arg1.n22;
_local12 = _arg2.n22;
_local13 = _arg1.n32;
_local14 = _arg2.n32;
_local15 = _arg1.n13;
_local16 = _arg2.n13;
_local17 = _arg1.n23;
_local18 = _arg2.n23;
_local19 = _arg1.n33;
_local20 = _arg2.n33;
_local21 = _arg1.n14;
_local22 = _arg2.n14;
_local23 = _arg1.n24;
_local24 = _arg2.n24;
_local25 = _arg1.n34;
_local26 = _arg2.n34;
this.n11 = (((_local3 * _local4) + (_local9 * _local6)) + (_local15 * _local8));
this.n12 = (((_local3 * _local10) + (_local9 * _local12)) + (_local15 * _local14));
this.n13 = (((_local3 * _local16) + (_local9 * _local18)) + (_local15 * _local20));
this.n14 = ((((_local3 * _local22) + (_local9 * _local24)) + (_local15 * _local26)) + _local21);
this.n21 = (((_local5 * _local4) + (_local11 * _local6)) + (_local17 * _local8));
this.n22 = (((_local5 * _local10) + (_local11 * _local12)) + (_local17 * _local14));
this.n23 = (((_local5 * _local16) + (_local11 * _local18)) + (_local17 * _local20));
this.n24 = ((((_local5 * _local22) + (_local11 * _local24)) + (_local17 * _local26)) + _local23);
this.n31 = (((_local7 * _local4) + (_local13 * _local6)) + (_local19 * _local8));
this.n32 = (((_local7 * _local10) + (_local13 * _local12)) + (_local19 * _local14));
this.n33 = (((_local7 * _local16) + (_local13 * _local18)) + (_local19 * _local20));
this.n34 = ((((_local7 * _local22) + (_local13 * _local24)) + (_local19 * _local26)) + _local25);
}
public function invert():void{
temp.copy(this);
calculateInverse(temp);
}
public function calculateInverse(_arg1:Matrix3D):void{
var _local2:Number;
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;
_local2 = _arg1.det;
if (Math.abs(_local2) > 0.001){
_local2 = (1 / _local2);
_local3 = _arg1.n11;
_local4 = _arg1.n21;
_local5 = _arg1.n31;
_local6 = _arg1.n12;
_local7 = _arg1.n22;
_local8 = _arg1.n32;
_local9 = _arg1.n13;
_local10 = _arg1.n23;
_local11 = _arg1.n33;
_local12 = _arg1.n14;
_local13 = _arg1.n24;
_local14 = _arg1.n34;
this.n11 = (_local2 * ((_local7 * _local11) - (_local8 * _local10)));
this.n12 = (-(_local2) * ((_local6 * _local11) - (_local8 * _local9)));
this.n13 = (_local2 * ((_local6 * _local10) - (_local7 * _local9)));
this.n14 = (-(_local2) * (((_local6 * ((_local10 * _local14) - (_local11 * _local13))) - (_local7 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local8 * ((_local9 * _local13) - (_local10 * _local12)))));
this.n21 = (-(_local2) * ((_local4 * _local11) - (_local5 * _local10)));
this.n22 = (_local2 * ((_local3 * _local11) - (_local5 * _local9)));
this.n23 = (-(_local2) * ((_local3 * _local10) - (_local4 * _local9)));
this.n24 = (_local2 * (((_local3 * ((_local10 * _local14) - (_local11 * _local13))) - (_local4 * ((_local9 * _local14) - (_local11 * _local12)))) + (_local5 * ((_local9 * _local13) - (_local10 * _local12)))));
this.n31 = (_local2 * ((_local4 * _local8) - (_local5 * _local7)));
this.n32 = (-(_local2) * ((_local3 * _local8) - (_local5 * _local6)));
this.n33 = (_local2 * ((_local3 * _local7) - (_local4 * _local6)));
this.n34 = (-(_local2) * (((_local3 * ((_local7 * _local14) - (_local8 * _local13))) - (_local4 * ((_local6 * _local14) - (_local8 * _local12)))) + (_local5 * ((_local6 * _local13) - (_local7 * _local12)))));
};
}
public function toString():String{
var _local1:String;
_local1 = "";
_local1 = (_local1 + ((((((((int((n11 * 1000)) / 1000) + "\t\t") + (int((n12 * 1000)) / 1000)) + "\t\t") + (int((n13 * 1000)) / 1000)) + "\t\t") + (int((n14 * 1000)) / 1000)) + "\n"));
_local1 = (_local1 + ((((((((int((n21 * 1000)) / 1000) + "\t\t") + (int((n22 * 1000)) / 1000)) + "\t\t") + (int((n23 * 1000)) / 1000)) + "\t\t") + (int((n24 * 1000)) / 1000)) + "\n"));
_local1 = (_local1 + ((((((((int((n31 * 1000)) / 1000) + "\t\t") + (int((n32 * 1000)) / 1000)) + "\t\t") + (int((n33 * 1000)) / 1000)) + "\t\t") + (int((n34 * 1000)) / 1000)) + "\n"));
_local1 = (_local1 + ((((((((int((n41 * 1000)) / 1000) + "\t\t") + (int((n42 * 1000)) / 1000)) + "\t\t") + (int((n43 * 1000)) / 1000)) + "\t\t") + (int((n44 * 1000)) / 1000)) + "\n"));
return (_local1);
}
public function reset(_arg1:Array=null):void{
if (((!(_arg1)) || ((_arg1.length < 12)))){
n11 = (n22 = (n33 = (n44 = 1)));
n12 = (n13 = (n14 = (n21 = (n23 = (n24 = (n31 = (n32 = (n34 = (n41 = (n42 = (n43 = 0)))))))))));
} else {
n11 = _arg1[0];
n12 = _arg1[1];
n13 = _arg1[2];
n14 = _arg1[3];
n21 = _arg1[4];
n22 = _arg1[5];
n23 = _arg1[6];
n24 = _arg1[7];
n31 = _arg1[8];
n32 = _arg1[9];
n33 = _arg1[10];
n34 = _arg1[11];
if (_arg1.length == 16){
n41 = _arg1[12];
n42 = _arg1[13];
n43 = _arg1[14];
n44 = _arg1[15];
} else {
n41 = (n42 = (n43 = 0));
n44 = 1;
};
};
}
public static function rotationMatrixWithReference(_arg1:Number3D, _arg2:Number, _arg3:Number3D):Matrix3D{
var _local4:Matrix3D;
_local4 = Matrix3D.translationMatrix(_arg3.x, -(_arg3.y), _arg3.z);
Matrix3D.translationMatrix(_arg3.x, -(_arg3.y), _arg3.z).calculateMultiply(_local4, Matrix3D.rotationMatrix(_arg1.x, _arg1.y, _arg1.z, _arg2));
_local4.calculateMultiply(_local4, Matrix3D.translationMatrix(-(_arg3.x), _arg3.y, -(_arg3.z)));
return (_local4);
}
public static function multiplyVector(_arg1:Matrix3D, _arg2:Number3D):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local3 = _arg2.x;
_local4 = _arg2.y;
_local5 = _arg2.z;
_arg2.x = ((((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)) + _arg1.n14);
_arg2.y = ((((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)) + _arg1.n24);
_arg2.z = ((((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)) + _arg1.n34);
}
public static function multiplyVector4x4(_arg1:Matrix3D, _arg2:Number3D):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
_local3 = _arg2.x;
_local4 = _arg2.y;
_local5 = _arg2.z;
_local6 = (1 / ((((_local3 * _arg1.n41) + (_local4 * _arg1.n42)) + (_local5 * _arg1.n43)) + _arg1.n44));
_arg2.x = ((((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13)) + _arg1.n14);
_arg2.y = ((((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23)) + _arg1.n24);
_arg2.z = ((((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33)) + _arg1.n34);
_arg2.x = (_arg2.x * _local6);
_arg2.y = (_arg2.y * _local6);
_arg2.z = (_arg2.z * _local6);
}
public static function multiply3x3(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{
var _local3:Matrix3D;
_local3 = new (Matrix3D);
_local3.calculateMultiply3x3(_arg1, _arg2);
return (_local3);
}
public static function normalizeQuaternion(_arg1:Object):Object{
var _local2:Number;
_local2 = magnitudeQuaternion(_arg1);
_arg1.x = (_arg1.x / _local2);
_arg1.y = (_arg1.y / _local2);
_arg1.z = (_arg1.z / _local2);
_arg1.w = (_arg1.w / _local2);
return (_arg1);
}
public static function multiplyVector3x3(_arg1:Matrix3D, _arg2:Number3D):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local3 = _arg2.x;
_local4 = _arg2.y;
_local5 = _arg2.z;
_arg2.x = (((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13));
_arg2.y = (((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23));
_arg2.z = (((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33));
}
public static function axis2quaternion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Object{
var _local5:Number;
var _local6:Number;
var _local7:Object;
_local5 = Math.sin((_arg4 / 2));
_local6 = Math.cos((_arg4 / 2));
_local7 = new Object();
_local7.x = (_arg1 * _local5);
_local7.y = (_arg2 * _local5);
_local7.z = (_arg3 * _local5);
_local7.w = _local6;
return (normalizeQuaternion(_local7));
}
public static function translationMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
var _local4:Matrix3D;
_local4 = IDENTITY;
_local4.n14 = _arg1;
_local4.n24 = _arg2;
_local4.n34 = _arg3;
return (_local4);
}
public static function magnitudeQuaternion(_arg1:Object):Number{
return (Math.sqrt(((((_arg1.w * _arg1.w) + (_arg1.x * _arg1.x)) + (_arg1.y * _arg1.y)) + (_arg1.z * _arg1.z))));
}
public static function rotationX(_arg1:Number):Matrix3D{
var _local2:Matrix3D;
var _local3:Number;
var _local4:Number;
_local2 = IDENTITY;
_local3 = Math.cos(_arg1);
_local4 = Math.sin(_arg1);
_local2.n22 = _local3;
_local2.n23 = -(_local4);
_local2.n32 = _local4;
_local2.n33 = _local3;
return (_local2);
}
public static function rotationY(_arg1:Number):Matrix3D{
var _local2:Matrix3D;
var _local3:Number;
var _local4:Number;
_local2 = IDENTITY;
_local3 = Math.cos(_arg1);
_local4 = Math.sin(_arg1);
_local2.n11 = _local3;
_local2.n13 = -(_local4);
_local2.n31 = _local4;
_local2.n33 = _local3;
return (_local2);
}
public static function rotationZ(_arg1:Number):Matrix3D{
var _local2:Matrix3D;
var _local3:Number;
var _local4:Number;
_local2 = IDENTITY;
_local3 = Math.cos(_arg1);
_local4 = Math.sin(_arg1);
_local2.n11 = _local3;
_local2.n12 = -(_local4);
_local2.n21 = _local4;
_local2.n22 = _local3;
return (_local2);
}
public static function clone(_arg1:Matrix3D):Matrix3D{
return (new Matrix3D([_arg1.n11, _arg1.n12, _arg1.n13, _arg1.n14, _arg1.n21, _arg1.n22, _arg1.n23, _arg1.n24, _arg1.n31, _arg1.n32, _arg1.n33, _arg1.n34]));
}
public static function rotationMatrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Matrix3D=null):Matrix3D{
var _local6:Matrix3D;
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;
if (!_arg5){
_local6 = IDENTITY;
} else {
_local6 = _arg5;
};
_local7 = Math.cos(_arg4);
_local8 = Math.sin(_arg4);
_local9 = (1 - _local7);
_local10 = ((_arg1 * _arg2) * _local9);
_local11 = ((_arg2 * _arg3) * _local9);
_local12 = ((_arg1 * _arg3) * _local9);
_local13 = (_local8 * _arg3);
_local14 = (_local8 * _arg2);
_local15 = (_local8 * _arg1);
_local6.n11 = (_local7 + ((_arg1 * _arg1) * _local9));
_local6.n12 = (-(_local13) + _local10);
_local6.n13 = (_local14 + _local12);
_local6.n21 = (_local13 + _local10);
_local6.n22 = (_local7 + ((_arg2 * _arg2) * _local9));
_local6.n23 = (-(_local15) + _local11);
_local6.n31 = (-(_local14) + _local12);
_local6.n32 = (_local15 + _local11);
_local6.n33 = (_local7 + ((_arg3 * _arg3) * _local9));
return (_local6);
}
public static function add(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{
var _local3:Matrix3D;
_local3 = new (Matrix3D);
_local3.calculateAdd(_arg1, _arg2);
return (_local3);
}
public static function multiply(_arg1:Matrix3D, _arg2:Matrix3D):Matrix3D{
var _local3:Matrix3D;
_local3 = new (Matrix3D);
_local3.calculateMultiply(_arg1, _arg2);
return (_local3);
}
public static function euler2quaternion(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Quaternion=null):Quaternion{
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:Quaternion;
_local5 = Math.sin((_arg1 * 0.5));
_local6 = Math.cos((_arg1 * 0.5));
_local7 = Math.sin((_arg2 * 0.5));
_local8 = Math.cos((_arg2 * 0.5));
_local9 = Math.sin((_arg3 * 0.5));
_local10 = Math.cos((_arg3 * 0.5));
_local11 = (_local6 * _local8);
_local12 = (_local5 * _local7);
if (!_arg4){
_local13 = new Quaternion();
} else {
_local13 = _arg4;
};
_local13.x = ((_local9 * _local11) - (_local10 * _local12));
_local13.y = (((_local10 * _local5) * _local8) + ((_local9 * _local6) * _local7));
_local13.z = (((_local10 * _local6) * _local7) - ((_local9 * _local5) * _local8));
_local13.w = ((_local10 * _local11) + (_local9 * _local12));
return (_local13);
}
public static function quaternion2matrix(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Matrix3D=null):Matrix3D{
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:Matrix3D;
_local6 = (_arg1 * _arg1);
_local7 = (_arg1 * _arg2);
_local8 = (_arg1 * _arg3);
_local9 = (_arg1 * _arg4);
_local10 = (_arg2 * _arg2);
_local11 = (_arg2 * _arg3);
_local12 = (_arg2 * _arg4);
_local13 = (_arg3 * _arg3);
_local14 = (_arg3 * _arg4);
if (!_arg5){
_local15 = IDENTITY;
} else {
_local15 = _arg5;
};
_local15.n11 = (1 - (2 * (_local10 + _local13)));
_local15.n12 = (2 * (_local7 - _local14));
_local15.n13 = (2 * (_local8 + _local12));
_local15.n21 = (2 * (_local7 + _local14));
_local15.n22 = (1 - (2 * (_local6 + _local13)));
_local15.n23 = (2 * (_local11 - _local9));
_local15.n31 = (2 * (_local8 - _local12));
_local15.n32 = (2 * (_local11 + _local9));
_local15.n33 = (1 - (2 * (_local6 + _local10)));
return (_local15);
}
public static function inverse(_arg1:Matrix3D):Matrix3D{
var _local2:Matrix3D;
_local2 = new (Matrix3D);
_local2.calculateInverse(_arg1);
return (_local2);
}
public static function euler2matrix(_arg1:Number3D):Matrix3D{
var _local2:Matrix3D;
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;
temp.reset();
_local2 = temp;
_local2 = temp;
_local3 = (_arg1.x * toRADIANS);
_local4 = (_arg1.y * toRADIANS);
_local5 = (_arg1.z * toRADIANS);
_local6 = Math.cos(_local3);
_local7 = Math.sin(_local3);
_local8 = Math.cos(_local4);
_local9 = Math.sin(_local4);
_local10 = Math.cos(_local5);
_local11 = Math.sin(_local5);
_local12 = (_local6 * _local9);
_local13 = (_local7 * _local9);
_local2.n11 = (_local8 * _local10);
_local2.n12 = (-(_local8) * _local11);
_local2.n13 = _local9;
_local2.n21 = ((_local13 * _local10) + (_local6 * _local11));
_local2.n22 = ((-(_local13) * _local11) + (_local6 * _local10));
_local2.n23 = (-(_local7) * _local8);
_local2.n31 = ((-(_local12) * _local10) + (_local7 * _local11));
_local2.n32 = ((_local12 * _local11) + (_local7 * _local10));
_local2.n33 = (_local6 * _local8);
return (_local2);
}
public static function scaleMatrix(_arg1:Number, _arg2:Number, _arg3:Number):Matrix3D{
var _local4:Matrix3D;
_local4 = IDENTITY;
_local4.n11 = _arg1;
_local4.n22 = _arg2;
_local4.n33 = _arg3;
return (_local4);
}
public static function rotateAxis(_arg1:Matrix3D, _arg2:Number3D):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local3 = _arg2.x;
_local4 = _arg2.y;
_local5 = _arg2.z;
_arg2.x = (((_local3 * _arg1.n11) + (_local4 * _arg1.n12)) + (_local5 * _arg1.n13));
_arg2.y = (((_local3 * _arg1.n21) + (_local4 * _arg1.n22)) + (_local5 * _arg1.n23));
_arg2.z = (((_local3 * _arg1.n31) + (_local4 * _arg1.n32)) + (_local5 * _arg1.n33));
_arg2.normalize();
}
public static function matrix2euler(_arg1:Matrix3D, _arg2:Number3D=null):Number3D{
var _local3:Matrix3D;
var _local4:Matrix3D;
var _local5:Matrix3D;
var _local6:Number;
if (!_arg2){
_arg2 = Number3D.ZERO;
};
n3Di.reset(_arg1.n11, _arg1.n21, _arg1.n31);
n3Dj.reset(_arg1.n12, _arg1.n22, _arg1.n32);
n3Dk.reset(_arg1.n13, _arg1.n23, _arg1.n33);
n3Di.normalize();
n3Dj.normalize();
n3Dk.normalize();
temp.reset([n3Di.x, n3Dj.x, n3Dk.x, 0, n3Di.y, n3Dj.y, n3Dk.y, 0, n3Di.z, n3Dj.z, n3Dk.z, 0]);
_local3 = temp;
_arg2.x = Math.atan2(_local3.n23, _local3.n33);
_local4 = Matrix3D.rotationX(-(_arg2.x));
_local5 = Matrix3D.multiply(_local4, _local3);
_local6 = Math.sqrt(((_local5.n11 * _local5.n11) + (_local5.n21 * _local5.n21)));
_arg2.y = Math.atan2(-(_local5.n31), _local6);
_arg2.z = Math.atan2(-(_local5.n12), _local5.n11);
if (_arg2.x == Math.PI){
if (_arg2.y > 0){
_arg2.y = (_arg2.y - Math.PI);
} else {
_arg2.y = (_arg2.y + Math.PI);
};
_arg2.x = 0;
_arg2.z = (_arg2.z + Math.PI);
};
_arg2.x = (_arg2.x * toDEGREES);
_arg2.y = (_arg2.y * toDEGREES);
_arg2.z = (_arg2.z * toDEGREES);
return (_arg2);
}
public static function multiplyQuaternion(_arg1:Object, _arg2:Object):Object{
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:Object;
_local3 = _arg1.x;
_local4 = _arg1.y;
_local5 = _arg1.z;
_local6 = _arg1.w;
_local7 = _arg2.x;
_local8 = _arg2.y;
_local9 = _arg2.z;
_local10 = _arg2.w;
_local11 = new Object();
_local11.x = ((((_local6 * _local7) + (_local3 * _local10)) + (_local4 * _local9)) - (_local5 * _local8));
_local11.y = ((((_local6 * _local8) + (_local4 * _local10)) + (_local5 * _local7)) - (_local3 * _local9));
_local11.z = ((((_local6 * _local9) + (_local5 * _local10)) + (_local3 * _local8)) - (_local4 * _local7));
_local11.w = ((((_local6 * _local10) - (_local3 * _local7)) - (_local4 * _local8)) - (_local5 * _local9));
return (_local11);
}
public static function get IDENTITY():Matrix3D{
return (new Matrix3D([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]));
}
}
}//package org.papervision3d.core.math
Section 41
//Number3D (org.papervision3d.core.math.Number3D)
package org.papervision3d.core.math {
import org.papervision3d.*;
public class Number3D {
public var z:Number;
public var x:Number;
public var y:Number;
public static var toDEGREES:Number = 57.2957795130823;
private static var temp:Number3D = Number3D.ZERO;
public static var toRADIANS:Number = 0.0174532925199433;
public function Number3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
}
public function normalize():void{
var _local1:Number;
_local1 = this.modulo;
if (((!((_local1 == 0))) && (!((_local1 == 1))))){
this.x = (this.x / _local1);
this.y = (this.y / _local1);
this.z = (this.z / _local1);
};
}
public function copyTo(_arg1:Number3D):void{
_arg1.x = x;
_arg1.y = y;
_arg1.z = z;
}
public function get moduloSquared():Number{
return ((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z)));
}
public function reset(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0):void{
x = _arg1;
y = _arg2;
z = _arg3;
}
public function isModuloGreaterThan(_arg1:Number):Boolean{
return ((moduloSquared > (_arg1 * _arg1)));
}
public function rotateX(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
if (Papervision3D.useDEGREES){
_arg1 = (_arg1 * toRADIANS);
};
_local2 = Math.cos(_arg1);
_local3 = Math.sin(_arg1);
temp.copyFrom(this);
this.y = ((temp.y * _local2) - (temp.z * _local3));
this.z = ((temp.y * _local3) + (temp.z * _local2));
}
public function rotateY(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
if (Papervision3D.useDEGREES){
_arg1 = (_arg1 * toRADIANS);
};
_local2 = Math.cos(_arg1);
_local3 = Math.sin(_arg1);
temp.copyFrom(this);
this.x = ((temp.x * _local2) + (temp.z * _local3));
this.z = ((temp.x * -(_local3)) + (temp.z * _local2));
}
public function rotateZ(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
if (Papervision3D.useDEGREES){
_arg1 = (_arg1 * toRADIANS);
};
_local2 = Math.cos(_arg1);
_local3 = Math.sin(_arg1);
temp.copyFrom(this);
this.x = ((temp.x * _local2) - (temp.y * _local3));
this.y = ((temp.x * _local3) + (temp.y * _local2));
}
public function clone():Number3D{
return (new Number3D(this.x, this.y, this.z));
}
public function plusEq(_arg1:Number3D):void{
x = (x + _arg1.x);
y = (y + _arg1.y);
z = (z + _arg1.z);
}
public function toString():String{
return (((((("x:" + (Math.round((x * 100)) / 100)) + " y:") + (Math.round((y * 100)) / 100)) + " z:") + (Math.round((z * 100)) / 100)));
}
public function isModuloEqualTo(_arg1:Number):Boolean{
return ((moduloSquared == (_arg1 * _arg1)));
}
public function multiplyEq(_arg1:Number):void{
x = (x * _arg1);
y = (y * _arg1);
z = (z * _arg1);
}
public function get modulo():Number{
return (Math.sqrt((((this.x * this.x) + (this.y * this.y)) + (this.z * this.z))));
}
public function isModuloLessThan(_arg1:Number):Boolean{
return ((moduloSquared < (_arg1 * _arg1)));
}
public function minusEq(_arg1:Number3D):void{
x = (x - _arg1.x);
y = (y - _arg1.y);
z = (z - _arg1.z);
}
public function copyFrom(_arg1:Number3D):void{
x = _arg1.x;
y = _arg1.y;
z = _arg1.z;
}
public static function sub(_arg1:Number3D, _arg2:Number3D):Number3D{
return (new Number3D((_arg1.x - _arg2.x), (_arg1.y - _arg2.y), (_arg1.z - _arg2.z)));
}
public static function add(_arg1:Number3D, _arg2:Number3D):Number3D{
return (new Number3D((_arg1.x + _arg2.x), (_arg1.y + _arg2.y), (_arg1.z + _arg2.z)));
}
public static function cross(_arg1:Number3D, _arg2:Number3D, _arg3:Number3D=null):Number3D{
if (!_arg3){
_arg3 = ZERO;
};
_arg3.reset(((_arg2.y * _arg1.z) - (_arg2.z * _arg1.y)), ((_arg2.z * _arg1.x) - (_arg2.x * _arg1.z)), ((_arg2.x * _arg1.y) - (_arg2.y * _arg1.x)));
return (_arg3);
}
public static function dot(_arg1:Number3D, _arg2:Number3D):Number{
return ((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg2.z * _arg1.z)));
}
public static function get ZERO():Number3D{
return (new Number3D(0, 0, 0));
}
}
}//package org.papervision3d.core.math
Section 42
//NumberUV (org.papervision3d.core.math.NumberUV)
package org.papervision3d.core.math {
public class NumberUV {
public var u:Number;
public var v:Number;
public function NumberUV(_arg1:Number=0, _arg2:Number=0){
this.u = _arg1;
this.v = _arg2;
}
public function toString():String{
return (((("u:" + u) + " v:") + v));
}
public function clone():NumberUV{
return (new NumberUV(this.u, this.v));
}
public static function get ZERO():NumberUV{
return (new NumberUV(0, 0));
}
}
}//package org.papervision3d.core.math
Section 43
//Quaternion (org.papervision3d.core.math.Quaternion)
package org.papervision3d.core.math {
public class Quaternion {
private var _matrix:Matrix3D;
public var w:Number;
public var x:Number;
public var y:Number;
public var z:Number;
public static const EPSILON:Number = 1E-6;
public static const DEGTORAD:Number = 0.0174532925199433;
public static const RADTODEG:Number = 57.2957795130823;
public function Quaternion(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1):void{
this.x = _arg1;
this.y = _arg2;
this.z = _arg3;
this.w = _arg4;
_matrix = Matrix3D.IDENTITY;
}
public function normalize():void{
var _local1:Number;
var _local2:Number;
_local1 = this.modulo;
if (Math.abs(_local1) < EPSILON){
x = (y = (z = 0));
w = 1;
} else {
_local2 = (1 / _local1);
x = (x * _local2);
y = (y * _local2);
z = (z * _local2);
w = (w * _local2);
};
}
public function get modulo():Number{
return (Math.sqrt(((((x * x) + (y * y)) + (z * z)) + (w * w))));
}
public function toMatrix():Matrix3D{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
_local1 = (x * x);
_local2 = (x * y);
_local3 = (x * z);
_local4 = (x * w);
_local5 = (y * y);
_local6 = (y * z);
_local7 = (y * w);
_local8 = (z * z);
_local9 = (z * w);
_matrix.n11 = (1 - (2 * (_local5 + _local8)));
_matrix.n12 = (2 * (_local2 - _local9));
_matrix.n13 = (2 * (_local3 + _local7));
_matrix.n21 = (2 * (_local2 + _local9));
_matrix.n22 = (1 - (2 * (_local1 + _local8)));
_matrix.n23 = (2 * (_local6 - _local4));
_matrix.n31 = (2 * (_local3 - _local7));
_matrix.n32 = (2 * (_local6 + _local4));
_matrix.n33 = (1 - (2 * (_local1 + _local5)));
return (_matrix);
}
public function mult(_arg1:Quaternion):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = this.w;
_local3 = this.x;
_local4 = this.y;
_local5 = this.z;
x = ((((_local2 * _arg1.x) + (_local3 * _arg1.w)) + (_local4 * _arg1.z)) - (_local5 * _arg1.y));
y = ((((_local2 * _arg1.y) - (_local3 * _arg1.z)) + (_local4 * _arg1.w)) + (_local5 * _arg1.x));
z = ((((_local2 * _arg1.z) + (_local3 * _arg1.y)) - (_local4 * _arg1.x)) + (_local5 * _arg1.w));
w = ((((_local2 * _arg1.w) - (_local3 * _arg1.x)) - (_local4 * _arg1.y)) - (_local5 * _arg1.z));
}
public static function createFromEuler(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false):Quaternion{
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:Quaternion;
if (_arg4){
_arg1 = (_arg1 * DEGTORAD);
_arg2 = (_arg2 * DEGTORAD);
_arg3 = (_arg3 * DEGTORAD);
};
_local5 = Math.sin((_arg1 * 0.5));
_local6 = Math.cos((_arg1 * 0.5));
_local7 = Math.sin((_arg2 * 0.5));
_local8 = Math.cos((_arg2 * 0.5));
_local9 = Math.sin((_arg3 * 0.5));
_local10 = Math.cos((_arg3 * 0.5));
_local11 = (_local6 * _local8);
_local12 = (_local5 * _local7);
_local13 = new (Quaternion);
_local13.x = ((_local9 * _local11) - (_local10 * _local12));
_local13.y = (((_local10 * _local5) * _local8) + ((_local9 * _local6) * _local7));
_local13.z = (((_local10 * _local6) * _local7) - ((_local9 * _local5) * _local8));
_local13.w = ((_local10 * _local11) + (_local9 * _local12));
return (_local13);
}
public static function createFromMatrix(_arg1:Matrix3D):Quaternion{
var _local2:Quaternion;
var _local3:Number;
var _local4:Array;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:Number;
var _local9:Array;
var _local10:Array;
_local2 = new (Quaternion);
_local4 = new Array(4);
_local8 = ((_arg1.n11 + _arg1.n22) + _arg1.n33);
if (_local8 > 0){
_local3 = Math.sqrt((_local8 + 1));
_local2.w = (_local3 / 2);
_local3 = (0.5 / _local3);
_local2.x = ((_arg1.n32 - _arg1.n23) * _local3);
_local2.y = ((_arg1.n13 - _arg1.n31) * _local3);
_local2.z = ((_arg1.n21 - _arg1.n12) * _local3);
} else {
_local9 = [1, 2, 0];
_local10 = [[_arg1.n11, _arg1.n12, _arg1.n13, _arg1.n14], [_arg1.n21, _arg1.n22, _arg1.n23, _arg1.n24], [_arg1.n31, _arg1.n32, _arg1.n33, _arg1.n34]];
_local5 = 0;
if (_local10[1][1] > _local10[0][0]){
_local5 = 1;
};
if (_local10[2][2] > _local10[_local5][_local5]){
_local5 = 2;
};
_local6 = _local9[_local5];
_local7 = _local9[_local6];
_local3 = Math.sqrt(((_local10[_local5][_local5] - (_local10[_local6][_local6] + _local10[_local7][_local7])) + 1));
_local4[_local5] = (_local3 * 0.5);
if (_local3 != 0){
_local3 = (0.5 / _local3);
};
_local4[3] = ((_local10[_local7][_local6] - _local10[_local6][_local7]) * _local3);
_local4[_local6] = ((_local10[_local6][_local5] + _local10[_local5][_local6]) * _local3);
_local4[_local7] = ((_local10[_local7][_local5] + _local10[_local5][_local7]) * _local3);
_local2.x = _local4[0];
_local2.y = _local4[1];
_local2.z = _local4[2];
_local2.w = _local4[3];
};
return (_local2);
}
public static function dot(_arg1:Quaternion, _arg2:Quaternion):Number{
return (((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)) + (_arg1.w * _arg2.w)));
}
public static function multiply(_arg1:Quaternion, _arg2:Quaternion):Quaternion{
var _local3:Quaternion;
_local3 = new (Quaternion);
_local3.x = ((((_arg1.w * _arg2.x) + (_arg1.x * _arg2.w)) + (_arg1.y * _arg2.z)) - (_arg1.z * _arg2.y));
_local3.y = ((((_arg1.w * _arg2.y) - (_arg1.x * _arg2.z)) + (_arg1.y * _arg2.w)) + (_arg1.z * _arg2.x));
_local3.z = ((((_arg1.w * _arg2.z) + (_arg1.x * _arg2.y)) - (_arg1.y * _arg2.x)) + (_arg1.z * _arg2.w));
_local3.w = ((((_arg1.w * _arg2.w) - (_arg1.x * _arg2.x)) - (_arg1.y * _arg2.y)) - (_arg1.z * _arg2.z));
return (_local3);
}
public static function createFromAxisAngle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Quaternion{
var _local5:Number;
var _local6:Number;
var _local7:Quaternion;
_local5 = Math.sin((_arg4 / 2));
_local6 = Math.cos((_arg4 / 2));
_local7 = new (Quaternion);
_local7.x = (_arg1 * _local5);
_local7.y = (_arg2 * _local5);
_local7.z = (_arg3 * _local5);
_local7.w = _local6;
_local7.normalize();
return (_local7);
}
public static function slerp(_arg1:Quaternion, _arg2:Quaternion, _arg3:Number):Quaternion{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local6 = ((((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z)) + (_arg1.w * _arg2.w));
if (_local6 < 0){
_local6 = -(_local6);
};
if ((1 - _local6) > EPSILON){
_local7 = Math.acos(_local6);
_local8 = Math.sin(_local7);
_local4 = (Math.sin(((1 - _arg3) * _local7)) / _local8);
_local5 = (Math.sin((_arg3 * _local7)) / _local8);
} else {
_local4 = (1 - _arg3);
_local5 = _arg3;
};
return (new Quaternion(((_local4 * _arg1.x) + (_local5 * _arg2.x)), ((_local4 * _arg1.y) + (_local5 * _arg2.y)), ((_local4 * _arg1.z) + (_local5 * _arg2.z)), ((_local4 * _arg1.w) + (_local5 * _arg2.w))));
}
public static function createFromOrthoMatrix(_arg1:Matrix3D):Quaternion{
var _local2:Quaternion;
_local2 = new (Quaternion);
_local2.w = (Math.sqrt(Math.max(0, (((1 + _arg1.n11) + _arg1.n22) + _arg1.n33))) / 2);
_local2.x = (Math.sqrt(Math.max(0, (((1 + _arg1.n11) - _arg1.n22) - _arg1.n33))) / 2);
_local2.y = (Math.sqrt(Math.max(0, (((1 - _arg1.n11) + _arg1.n22) - _arg1.n33))) / 2);
_local2.z = (Math.sqrt(Math.max(0, (((1 - _arg1.n11) - _arg1.n22) + _arg1.n33))) / 2);
_local2.x = (((_arg1.n32 - _arg1.n23) < 0)) ? ((_local2.x < 0)) ? _local2.x : -(_local2.x) : ((_local2.x < 0)) ? -(_local2.x) : _local2.x;
_local2.y = (((_arg1.n13 - _arg1.n31) < 0)) ? ((_local2.y < 0)) ? _local2.y : -(_local2.y) : ((_local2.y < 0)) ? -(_local2.y) : _local2.y;
_local2.z = (((_arg1.n21 - _arg1.n12) < 0)) ? ((_local2.z < 0)) ? _local2.z : -(_local2.z) : ((_local2.z < 0)) ? -(_local2.z) : _local2.z;
return (_local2);
}
public static function conjugate(_arg1:Quaternion):Quaternion{
var _local2:Quaternion;
_local2 = new (Quaternion);
_local2.x = -(_arg1.x);
_local2.y = -(_arg1.y);
_local2.z = -(_arg1.z);
_local2.w = _arg1.w;
return (_local2);
}
public static function slerpOld(_arg1:Quaternion, _arg2:Quaternion, _arg3:Number):Quaternion{
var _local4:Quaternion;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
_local4 = new (Quaternion);
_local5 = ((((_arg1.w * _arg2.w) + (_arg1.x * _arg2.x)) + (_arg1.y * _arg2.y)) + (_arg1.z * _arg2.z));
if (Math.abs(_local5) >= 1){
_local4.w = _arg1.w;
_local4.x = _arg1.x;
_local4.y = _arg1.y;
_local4.z = _arg1.z;
return (_local4);
};
_local6 = Math.acos(_local5);
_local7 = Math.sqrt((1 - (_local5 * _local5)));
if (Math.abs(_local7) < 0.001){
_local4.w = ((_arg1.w * 0.5) + (_arg2.w * 0.5));
_local4.x = ((_arg1.x * 0.5) + (_arg2.x * 0.5));
_local4.y = ((_arg1.y * 0.5) + (_arg2.y * 0.5));
_local4.z = ((_arg1.z * 0.5) + (_arg2.z * 0.5));
return (_local4);
};
_local8 = (Math.sin(((1 - _arg3) * _local6)) / _local7);
_local9 = (Math.sin((_arg3 * _local6)) / _local7);
_local4.w = ((_arg1.w * _local8) + (_arg2.w * _local9));
_local4.x = ((_arg1.x * _local8) + (_arg2.x * _local9));
_local4.y = ((_arg1.y * _local8) + (_arg2.y * _local9));
_local4.z = ((_arg1.z * _local8) + (_arg2.z * _local9));
return (_local4);
}
}
}//package org.papervision3d.core.math
Section 44
//pv3dview (org.papervision3d.core.ns.pv3dview)
package org.papervision3d.core.ns {
public namespace pv3dview;
}//package org.papervision3d.core.ns
Section 45
//CameraObject3D (org.papervision3d.core.proto.CameraObject3D)
package org.papervision3d.core.proto {
import flash.geom.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
public class CameraObject3D extends DisplayObject3D {
public var eye:Matrix3D;
public var sort:Boolean;
public var viewport:Rectangle;
public var zoom:Number;
public var focus:Number;
public static const TYPE:String = "ABSTRACT";
public static var DEFAULT_POS:Number3D = new Number3D(0, 0, -1000);
private static var _flipY:Matrix3D = Matrix3D.scaleMatrix(1, -1, 1);
public function CameraObject3D(_arg1:Number=3, _arg2:Number=500, _arg3:Object=null){
this.x = (_arg3) ? ((_arg3.x) || (DEFAULT_POS.x)) : DEFAULT_POS.x;
this.y = (_arg3) ? ((_arg3.y) || (DEFAULT_POS.y)) : DEFAULT_POS.y;
this.z = (_arg3) ? ((_arg3.z) || (DEFAULT_POS.z)) : DEFAULT_POS.z;
this.zoom = _arg1;
this.focus = _arg2;
this.eye = Matrix3D.IDENTITY;
this.sort = (_arg3) ? !((_arg3.sort == false)) : true;
}
public function transformView(_arg1:Matrix3D=null):void{
eye.calculateMultiply(((_arg1) || (this.transform)), _flipY);
eye.invert();
}
public function pan(_arg1:Number):void{
super.yaw(_arg1);
}
public function tilt(_arg1:Number):void{
super.pitch(_arg1);
}
}
}//package org.papervision3d.core.proto
Section 46
//DisplayObjectContainer3D (org.papervision3d.core.proto.DisplayObjectContainer3D)
package org.papervision3d.core.proto {
import org.papervision3d.objects.*;
import flash.events.*;
import flash.utils.*;
public class DisplayObjectContainer3D extends EventDispatcher {
private var _childrenTotal:int;
public var root:DisplayObjectContainer3D;
protected var _children:Dictionary;
protected var _childrenByName:Object;
public function DisplayObjectContainer3D():void{
this._children = new Dictionary(false);
this._childrenByName = new Dictionary(true);
this._childrenTotal = 0;
}
public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{
_arg2 = ((((_arg2) || (_arg1.name))) || (String(_arg1.id)));
this._children[_arg1] = _arg2;
this._childrenByName[_arg2] = _arg1;
this._childrenTotal++;
_arg1.parent = this;
_arg1.root = this.root;
return (_arg1);
}
private function findChildByName(_arg1:String, _arg2:DisplayObject3D=null):DisplayObject3D{
var _local3:DisplayObject3D;
var _local4:DisplayObject3D;
_arg2 = ((_arg2) || (DisplayObject3D(this)));
if (!_arg2){
return (null);
};
if (_arg2.name == _arg1){
return (_arg2);
};
for each (_local3 in _arg2.children) {
_local4 = findChildByName(_arg1, _local3);
if (_local4){
return (_local4);
};
};
return (null);
}
public function getChildByName(_arg1:String, _arg2:Boolean=false):DisplayObject3D{
if (_arg2){
return (findChildByName(_arg1));
};
return (this._childrenByName[_arg1]);
}
public function get numChildren():int{
return (this._childrenTotal);
}
public function addChildren(_arg1:DisplayObject3D):DisplayObjectContainer3D{
var _local2:DisplayObject3D;
for each (_local2 in _arg1.children) {
_arg1.removeChild(_local2);
this.addChild(_local2);
};
return (this);
}
public function removeChildByName(_arg1:String):DisplayObject3D{
return (removeChild(getChildByName(_arg1)));
}
override public function toString():String{
return (childrenList());
}
public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{
if (_arg1){
delete this._childrenByName[this._children[_arg1]];
delete this._children[_arg1];
_arg1.parent = null;
_arg1.root = null;
return (_arg1);
};
return (null);
}
public function childrenList():String{
var _local1:String;
var _local2:String;
_local1 = "";
for (_local2 in this._children) {
_local1 = (_local1 + (_local2 + "\n"));
};
return (_local1);
}
public function get children():Object{
return (this._childrenByName);
}
}
}//package org.papervision3d.core.proto
Section 47
//GeometryObject3D (org.papervision3d.core.proto.GeometryObject3D)
package org.papervision3d.core.proto {
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
import flash.events.*;
import flash.utils.*;
public class GeometryObject3D extends EventDispatcher {
protected var _boundingSphereDirty:Boolean;// = true
public var dirty:Boolean;
protected var _aabbDirty:Boolean;// = true
public var _ready:Boolean;// = false
protected var _boundingSphere:BoundingSphere;
public var faces:Array;
private var _numInstances:uint;// = 0
public var vertices:Array;
protected var _aabb:AxisAlignedBoundingBox;
public function GeometryObject3D(_arg1:Object=null):void{
_boundingSphereDirty = true;
_aabbDirty = true;
_numInstances = 0;
_ready = false;
super();
dirty = true;
}
public function transformVertices(_arg1:Matrix3D):void{
}
private function createVertexNormals():void{
var _local1:Dictionary;
var _local2:Triangle3D;
var _local3:Vertex3D;
_local1 = new Dictionary(true);
for each (_local2 in faces) {
_local2.v0.connectedFaces[_local2] = _local2;
_local2.v1.connectedFaces[_local2] = _local2;
_local2.v2.connectedFaces[_local2] = _local2;
_local1[_local2.v0] = _local2.v0;
_local1[_local2.v1] = _local2.v1;
_local1[_local2.v2] = _local2.v2;
};
for each (_local3 in _local1) {
_local3.calculateNormal();
};
}
public function get boundingSphere():BoundingSphere{
if (_boundingSphereDirty){
_boundingSphere = BoundingSphere.getFromVertices(vertices);
_boundingSphereDirty = false;
};
return (_boundingSphere);
}
public function transformUV(_arg1:MaterialObject3D):void{
var _local2:String;
if (_arg1.bitmap){
for (_local2 in this.faces) {
faces[_local2].transformUV(_arg1);
};
};
}
public function clone(_arg1:DisplayObject3D=null):GeometryObject3D{
var _local2:Dictionary;
var _local3:GeometryObject3D;
var _local4:int;
var _local5:Vertex3D;
var _local6:Triangle3D;
var _local7:Vertex3D;
var _local8:Vertex3D;
var _local9:Vertex3D;
_local2 = new Dictionary();
_local3 = new GeometryObject3D();
_local3.vertices = new Array();
_local3.faces = new Array();
_local4 = 0;
while (_local4 < this.vertices.length) {
_local5 = this.vertices[_local4];
_local2[_local5] = _local5.clone();
_local3.vertices.push(_local2[_local5]);
_local4++;
};
_local4 = 0;
while (_local4 < this.faces.length) {
_local6 = this.faces[_local4];
_local7 = _local2[_local6.v0];
_local8 = _local2[_local6.v1];
_local9 = _local2[_local6.v2];
_local3.faces.push(new Triangle3D(_arg1, [_local7, _local8, _local9], _local6.material, _local6.uv));
_local4++;
};
return (_local3);
}
public function set ready(_arg1:Boolean):void{
if (_arg1){
createVertexNormals();
this.dirty = false;
};
_ready = _arg1;
}
public function get ready():Boolean{
return (_ready);
}
public function get aabb():AxisAlignedBoundingBox{
if (_aabbDirty){
_aabb = AxisAlignedBoundingBox.createFromVertices(vertices);
_aabbDirty = false;
};
return (_aabb);
}
}
}//package org.papervision3d.core.proto
Section 48
//LightObject3D (org.papervision3d.core.proto.LightObject3D)
package org.papervision3d.core.proto {
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.*;
public class LightObject3D extends DisplayObject3D {
private var displaySphere:Sphere;
public var lightMatrix:Matrix3D;
public var flipped:Boolean;
private var _showLight:Boolean;
public function LightObject3D(_arg1:Boolean=false, _arg2:Boolean=false){
this.lightMatrix = Matrix3D.IDENTITY;
this.showLight = _arg1;
this.flipped = _arg2;
}
public function get showLight():Boolean{
return (_showLight);
}
public function set showLight(_arg1:Boolean):void{
if (_showLight){
removeChild(displaySphere);
};
if (_arg1){
displaySphere = new Sphere(new WireframeMaterial(0xFFFF00), 10, 3, 2);
addChild(displaySphere);
};
_showLight = _arg1;
}
}
}//package org.papervision3d.core.proto
Section 49
//MaterialObject3D (org.papervision3d.core.proto.MaterialObject3D)
package org.papervision3d.core.proto {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.objects.*;
import org.papervision3d.core.render.material.*;
import flash.events.*;
import org.papervision3d.core.render.draw.*;
import flash.utils.*;
import org.papervision3d.materials.*;
public class MaterialObject3D extends EventDispatcher implements ITriangleDrawer {
public var widthOffset:Number;// = 0
public var name:String;
public var heightOffset:Number;// = 0
public var fillAlpha:Number;// = 0
public var fillColor:Number;
public var id:Number;
protected var objects:Dictionary;
public var invisible:Boolean;// = false
public var smooth:Boolean;// = false
public var bitmap:BitmapData;
public var lineColor:Number;
public var lineAlpha:Number;// = 0
public var oneSide:Boolean;// = true
public var lineThickness:Number;// = 1
public var interactive:Boolean;// = false
public var opposite:Boolean;// = false
public var maxU:Number;
public var tiled:Boolean;// = false
public var maxV:Number;
public static var DEFAULT_COLOR:int = 0;
public static var DEBUG_COLOR:int = 0xFF00FF;
private static var _totalMaterialObjects:Number = 0;
public function MaterialObject3D(){
smooth = false;
tiled = false;
lineColor = DEFAULT_COLOR;
lineAlpha = 0;
lineThickness = 1;
fillColor = DEFAULT_COLOR;
fillAlpha = 0;
oneSide = true;
invisible = false;
opposite = false;
widthOffset = 0;
heightOffset = 0;
interactive = false;
super();
this.id = _totalMaterialObjects++;
MaterialManager.registerMaterial(this);
objects = new Dictionary(true);
}
public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{
}
public function get doubleSided():Boolean{
return (!(this.oneSide));
}
public function unregisterObject(_arg1:DisplayObject3D):void{
if (((objects) && (!((objects[_arg1] == null))))){
delete objects[_arg1];
};
}
public function set doubleSided(_arg1:Boolean):void{
this.oneSide = !(_arg1);
}
public function registerObject(_arg1:DisplayObject3D):void{
objects[_arg1] = _arg1;
}
public function updateBitmap():void{
}
override public function toString():String{
return (((((("[MaterialObject3D] bitmap:" + this.bitmap) + " lineColor:") + this.lineColor) + " fillColor:") + fillColor));
}
public function copy(_arg1:MaterialObject3D):void{
this.bitmap = _arg1.bitmap;
this.smooth = _arg1.smooth;
this.lineColor = _arg1.lineColor;
this.lineAlpha = _arg1.lineAlpha;
this.fillColor = _arg1.fillColor;
this.fillAlpha = _arg1.fillAlpha;
this.oneSide = _arg1.oneSide;
this.opposite = _arg1.opposite;
this.invisible = _arg1.invisible;
this.name = _arg1.name;
this.maxU = _arg1.maxU;
this.maxV = _arg1.maxV;
}
public function destroy():void{
objects = null;
bitmap = null;
MaterialManager.unRegisterMaterial(this);
}
public function clone():MaterialObject3D{
var _local1:MaterialObject3D;
_local1 = new MaterialObject3D();
_local1.copy(this);
return (_local1);
}
public static function get DEFAULT():MaterialObject3D{
var _local1:MaterialObject3D;
_local1 = new WireframeMaterial();
_local1.lineColor = (0xFFFFFF * Math.random());
_local1.lineAlpha = 1;
_local1.fillColor = DEFAULT_COLOR;
_local1.fillAlpha = 1;
_local1.doubleSided = false;
return (_local1);
}
public static function get DEBUG():MaterialObject3D{
var _local1:MaterialObject3D;
_local1 = new (MaterialObject3D);
_local1.lineColor = (0xFFFFFF * Math.random());
_local1.lineAlpha = 1;
_local1.fillColor = DEBUG_COLOR;
_local1.fillAlpha = 0.37;
_local1.doubleSided = true;
return (_local1);
}
}
}//package org.papervision3d.core.proto
Section 50
//SceneObject3D (org.papervision3d.core.proto.SceneObject3D)
package org.papervision3d.core.proto {
import org.papervision3d.materials.utils.*;
import org.papervision3d.objects.*;
import org.papervision3d.*;
public class SceneObject3D extends DisplayObjectContainer3D {
public var objects:Array;
public var materials:MaterialsList;
public function SceneObject3D(){
this.objects = new Array();
this.materials = new MaterialsList();
Papervision3D.log((((((Papervision3D.NAME + " ") + Papervision3D.VERSION) + " (") + Papervision3D.DATE) + ")\n"));
this.root = this;
}
override public function removeChild(_arg1:DisplayObject3D):DisplayObject3D{
var _local2:int;
super.removeChild(_arg1);
_local2 = 0;
while (_local2 < this.objects.length) {
if (this.objects[_local2] === _arg1){
this.objects.splice(_local2, 1);
return (_arg1);
};
_local2++;
};
return (_arg1);
}
override public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{
var _local3:DisplayObject3D;
_local3 = super.addChild(_arg1, (_arg2) ? _arg2 : _arg1.name);
_arg1.scene = this;
this.objects.push(_local3);
return (_local3);
}
}
}//package org.papervision3d.core.proto
Section 51
//AbstractRenderListItem (org.papervision3d.core.render.command.AbstractRenderListItem)
package org.papervision3d.core.render.command {
import org.papervision3d.core.render.data.*;
public class AbstractRenderListItem implements IRenderListItem {
public var screenDepth:Number;
public function render(_arg1:RenderSessionData):void{
}
}
}//package org.papervision3d.core.render.command
Section 52
//IRenderListItem (org.papervision3d.core.render.command.IRenderListItem)
package org.papervision3d.core.render.command {
import org.papervision3d.core.render.data.*;
public interface IRenderListItem {
function render(_arg1:RenderSessionData):void;
}
}//package org.papervision3d.core.render.command
Section 53
//RenderableListItem (org.papervision3d.core.render.command.RenderableListItem)
package org.papervision3d.core.render.command {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import flash.geom.*;
public class RenderableListItem extends AbstractRenderListItem {
public var renderableInstance:IRenderable;
public var renderable:Class;
public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{
return (_arg2);
}
}
}//package org.papervision3d.core.render.command
Section 54
//RenderParticle (org.papervision3d.core.render.command.RenderParticle)
package org.papervision3d.core.render.command {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import flash.geom.*;
import org.papervision3d.materials.special.*;
public class RenderParticle extends RenderableListItem implements IRenderListItem {
public var particle:Particle;
public var renderMat:ParticleMaterial;
public function RenderParticle(_arg1:Particle){
this.particle = _arg1;
}
override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{
renderMat = particle.material;
if (renderMat.interactive){
if (particle.renderRect.contains(_arg1.x, _arg1.y)){
_arg2.displayObject3D = particle.instance;
_arg2.material = renderMat;
_arg2.renderable = particle;
_arg2.hasHit = true;
_arg2.x = particle.x;
_arg2.y = particle.y;
_arg2.z = particle.z;
_arg2.u = 0;
_arg2.v = 0;
return (_arg2);
};
};
return (_arg2);
}
override public function render(_arg1:RenderSessionData):void{
particle.material.drawParticle(particle, _arg1.container.graphics, _arg1);
}
}
}//package org.papervision3d.core.render.command
Section 55
//RenderTriangle (org.papervision3d.core.render.command.RenderTriangle)
package org.papervision3d.core.render.command {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.render.draw.*;
import org.papervision3d.materials.*;
public class RenderTriangle extends RenderableListItem implements IRenderListItem {
public var renderer:ITriangleDrawer;
public var triangle:Triangle3D;
private var position:Number3D;
public var renderMat:MaterialObject3D;
public var container:Sprite;
public function RenderTriangle(_arg1:Triangle3D):void{
position = new Number3D();
super();
this.triangle = _arg1;
renderableInstance = _arg1;
renderable = Triangle3D;
}
override public function hitTestPoint2D(_arg1:Point, _arg2:RenderHitData):RenderHitData{
var _local3:Vertex3DInstance;
var _local4:Vertex3DInstance;
var _local5:Vertex3DInstance;
var _local6:Vertex3DInstance;
renderMat = triangle.material;
if (!renderMat){
renderMat = triangle.instance.material;
};
if (renderMat.interactive){
_local3 = new Vertex3DInstance(_arg1.x, _arg1.y);
_local4 = triangle.v0.vertex3DInstance;
_local5 = triangle.v1.vertex3DInstance;
_local6 = triangle.v2.vertex3DInstance;
if (sameSide(_local3, _local4, _local5, _local6)){
if (sameSide(_local3, _local5, _local4, _local6)){
if (sameSide(_local3, _local6, _local4, _local5)){
return (deepHitTest(triangle, _local3, _arg2));
};
};
};
};
return (_arg2);
}
public function sameSide(_arg1:Vertex3DInstance, _arg2:Vertex3DInstance, _arg3:Vertex3DInstance, _arg4:Vertex3DInstance):Boolean{
var _local5:Number;
_local5 = (Vertex3DInstance.cross(Vertex3DInstance.sub(_arg4, _arg3), Vertex3DInstance.sub(_arg1, _arg3)) * Vertex3DInstance.cross(Vertex3DInstance.sub(_arg4, _arg3), Vertex3DInstance.sub(_arg2, _arg3)));
return ((_local5 > 0));
}
private function deepHitTest(_arg1:Triangle3D, _arg2:Vertex3DInstance, _arg3:RenderHitData):RenderHitData{
var _local4:Vertex3DInstance;
var _local5:Vertex3DInstance;
var _local6:Vertex3DInstance;
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;
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 _local29:Number;
var _local30:Array;
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:BitmapData;
var _local40:Number;
var _local41:Number;
_local4 = _arg1.v0.vertex3DInstance;
_local5 = _arg1.v1.vertex3DInstance;
_local6 = _arg1.v2.vertex3DInstance;
_local7 = (_local6.x - _local4.x);
_local8 = (_local6.y - _local4.y);
_local9 = (_local5.x - _local4.x);
_local10 = (_local5.y - _local4.y);
_local11 = (_arg2.x - _local4.x);
_local12 = (_arg2.y - _local4.y);
_local13 = ((_local7 * _local7) + (_local8 * _local8));
_local14 = ((_local7 * _local9) + (_local8 * _local10));
_local15 = ((_local7 * _local11) + (_local8 * _local12));
_local16 = ((_local9 * _local9) + (_local10 * _local10));
_local17 = ((_local9 * _local11) + (_local10 * _local12));
_local18 = (1 / ((_local13 * _local16) - (_local14 * _local14)));
_local19 = (((_local16 * _local15) - (_local14 * _local17)) * _local18);
_local20 = (((_local13 * _local17) - (_local14 * _local15)) * _local18);
_local21 = (_arg1.v2.x - _arg1.v0.x);
_local22 = (_arg1.v2.y - _arg1.v0.y);
_local23 = (_arg1.v2.z - _arg1.v0.z);
_local24 = (_arg1.v1.x - _arg1.v0.x);
_local25 = (_arg1.v1.y - _arg1.v0.y);
_local26 = (_arg1.v1.z - _arg1.v0.z);
_local27 = ((_arg1.v0.x + (_local21 * _local19)) + (_local24 * _local20));
_local28 = ((_arg1.v0.y + (_local22 * _local19)) + (_local25 * _local20));
_local29 = ((_arg1.v0.z + (_local23 * _local19)) + (_local26 * _local20));
_local30 = _arg1.uv;
_local31 = _local30[0].u;
_local32 = _local30[1].u;
_local33 = _local30[2].u;
_local34 = _local30[0].v;
_local35 = _local30[1].v;
_local36 = _local30[2].v;
_local37 = ((((_local32 - _local31) * _local20) + ((_local33 - _local31) * _local19)) + _local31);
_local38 = ((((_local35 - _local34) * _local20) + ((_local36 - _local34) * _local19)) + _local34);
if (triangle.material){
renderMat = _arg1.material;
} else {
renderMat = _arg1.instance.material;
};
_local39 = renderMat.bitmap;
_local40 = 1;
_local41 = 1;
if (_local39){
_local40 = (BitmapMaterial.AUTO_MIP_MAPPING) ? renderMat.widthOffset : _local39.width;
_local41 = (BitmapMaterial.AUTO_MIP_MAPPING) ? renderMat.heightOffset : _local39.height;
};
_arg3.displayObject3D = _arg1.instance;
_arg3.material = renderMat;
_arg3.renderable = _arg1;
_arg3.hasHit = true;
position.x = _local27;
position.y = _local28;
position.z = _local29;
Matrix3D.multiplyVector(_arg1.instance.world, position);
_arg3.x = position.x;
_arg3.y = position.y;
_arg3.z = position.z;
_arg3.u = (_local37 * _local40);
_arg3.v = (_local41 - (_local38 * _local41));
return (_arg3);
}
override public function render(_arg1:RenderSessionData):void{
renderer.drawTriangle(triangle, _arg1.container.graphics, _arg1);
}
}
}//package org.papervision3d.core.render.command
Section 56
//RenderHitData (org.papervision3d.core.render.data.RenderHitData)
package org.papervision3d.core.render.data {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.objects.*;
public class RenderHitData {
public var y:Number;
public var endTime:int;// = 0
public var displayObject3D:DisplayObject3D;
public var startTime:int;// = 0
public var hasHit:Boolean;// = false
public var material:MaterialObject3D;
public var renderable:IRenderable;
public var u:Number;
public var v:Number;
public var x:Number;
public var z:Number;
public function RenderHitData(){
startTime = 0;
endTime = 0;
hasHit = false;
super();
}
public function toString():String{
return (((displayObject3D + " ") + renderable));
}
}
}//package org.papervision3d.core.render.data
Section 57
//RenderSessionData (org.papervision3d.core.render.data.RenderSessionData)
package org.papervision3d.core.render.data {
import org.papervision3d.core.proto.*;
import org.papervision3d.view.*;
import flash.display.*;
import org.papervision3d.core.culling.*;
import org.papervision3d.core.render.*;
public class RenderSessionData {
public var renderer:IRenderEngine;
public var particleCuller:IParticleCuller;
public var viewPort:Viewport3D;
public var triangleCuller:ITriangleCuller;
public var container:Sprite;
public var scene:SceneObject3D;
public var camera:CameraObject3D;
public var renderStatistics:RenderStatistics;
public var sorted:Boolean;
public function RenderSessionData():void{
this.renderStatistics = new RenderStatistics();
}
}
}//package org.papervision3d.core.render.data
Section 58
//RenderStatistics (org.papervision3d.core.render.data.RenderStatistics)
package org.papervision3d.core.render.data {
public class RenderStatistics {
public var renderTime:int;// = 0
public var culledObjects:int;// = 0
public var shadedTriangles:int;// = 0
public var culledParticles:int;// = 0
public var culledTriangles:int;// = 0
public var triangles:int;// = 0
public var particles:int;// = 0
public var rendered:int;// = 0
public var projectionTime:int;// = 0
public var filteredObjects:int;// = 0
public var lines:int;// = 0
public function RenderStatistics(){
projectionTime = 0;
renderTime = 0;
rendered = 0;
triangles = 0;
culledTriangles = 0;
particles = 0;
culledParticles = 0;
lines = 0;
shadedTriangles = 0;
filteredObjects = 0;
culledObjects = 0;
super();
}
public function clear():void{
projectionTime = 0;
renderTime = 0;
rendered = 0;
particles = 0;
triangles = 0;
culledTriangles = 0;
culledParticles = 0;
lines = 0;
shadedTriangles = 0;
filteredObjects = 0;
culledObjects = 0;
}
public function toString():String{
return (new String((((((((((((((((((("ProjectionTime:" + projectionTime) + " RenderTime:") + renderTime) + " Particles:") + particles) + " CulledParticles :") + culledParticles) + " Triangles:") + triangles) + " ShadedTriangles :") + shadedTriangles) + " CulledTriangles:") + culledTriangles) + " FilteredObjects:") + filteredObjects) + " CulledObjects:") + culledObjects) + "")));
}
}
}//package org.papervision3d.core.render.data
Section 59
//IParticleDrawer (org.papervision3d.core.render.draw.IParticleDrawer)
package org.papervision3d.core.render.draw {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
public interface IParticleDrawer {
function updateRenderRect(_arg1:Particle):void;
function drawParticle(_arg1:Particle, _arg2:Graphics, _arg3:RenderSessionData):void;
}
}//package org.papervision3d.core.render.draw
Section 60
//ITriangleDrawer (org.papervision3d.core.render.draw.ITriangleDrawer)
package org.papervision3d.core.render.draw {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
public interface ITriangleDrawer {
function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void;
}
}//package org.papervision3d.core.render.draw
Section 61
//BasicRenderFilter (org.papervision3d.core.render.filter.BasicRenderFilter)
package org.papervision3d.core.render.filter {
public class BasicRenderFilter implements IRenderFilter {
public function filter(_arg1:Array):int{
return (0);
}
}
}//package org.papervision3d.core.render.filter
Section 62
//IRenderFilter (org.papervision3d.core.render.filter.IRenderFilter)
package org.papervision3d.core.render.filter {
public interface IRenderFilter {
function filter(_arg1:Array):int;
}
}//package org.papervision3d.core.render.filter
Section 63
//IUpdateAfterMaterial (org.papervision3d.core.render.material.IUpdateAfterMaterial)
package org.papervision3d.core.render.material {
import org.papervision3d.core.render.data.*;
public interface IUpdateAfterMaterial {
function updateAfterRender(_arg1:RenderSessionData):void;
}
}//package org.papervision3d.core.render.material
Section 64
//IUpdateBeforeMaterial (org.papervision3d.core.render.material.IUpdateBeforeMaterial)
package org.papervision3d.core.render.material {
import org.papervision3d.core.render.data.*;
public interface IUpdateBeforeMaterial {
function updateBeforeRender(_arg1:RenderSessionData):void;
}
}//package org.papervision3d.core.render.material
Section 65
//MaterialManager (org.papervision3d.core.render.material.MaterialManager)
package org.papervision3d.core.render.material {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import flash.utils.*;
public class MaterialManager {
private var materials:Dictionary;
private static var instance:MaterialManager;
public function MaterialManager():void{
if (instance){
throw (new Error("Only 1 instance of materialmanager allowed"));
};
init();
}
private function init():void{
materials = new Dictionary(true);
}
private function _unRegisterMaterial(_arg1:MaterialObject3D):void{
delete materials[_arg1];
}
public function updateMaterialsAfterRender(_arg1:RenderSessionData):void{
var _local2:IUpdateAfterMaterial;
var _local3:MaterialObject3D;
for each (_local3 in materials) {
if ((_local3 is IUpdateAfterMaterial)){
_local2 = (_local3 as IUpdateAfterMaterial);
_local2.updateAfterRender(_arg1);
};
};
}
private function _registerMaterial(_arg1:MaterialObject3D):void{
materials[_arg1] = _arg1;
}
public function updateMaterialsBeforeRender(_arg1:RenderSessionData):void{
var _local2:IUpdateBeforeMaterial;
var _local3:MaterialObject3D;
for each (_local3 in materials) {
if ((_local3 is IUpdateBeforeMaterial)){
_local2 = (_local3 as IUpdateBeforeMaterial);
_local2.updateBeforeRender(_arg1);
};
};
}
public static function getInstance():MaterialManager{
if (!instance){
instance = new (MaterialManager);
};
return (instance);
}
public static function unRegisterMaterial(_arg1:MaterialObject3D):void{
getInstance()._unRegisterMaterial(_arg1);
}
public static function registerMaterial(_arg1:MaterialObject3D):void{
getInstance()._registerMaterial(_arg1);
}
}
}//package org.papervision3d.core.render.material
Section 66
//BasicProjectionPipeline (org.papervision3d.core.render.project.BasicProjectionPipeline)
package org.papervision3d.core.render.project {
import org.papervision3d.core.render.data.*;
import org.papervision3d.objects.*;
import org.papervision3d.core.culling.*;
public class BasicProjectionPipeline extends ProjectionPipeline {
public function BasicProjectionPipeline(){
init();
}
protected function init():void{
}
protected function projectObject(_arg1:DisplayObject3D, _arg2:RenderSessionData):void{
_arg1.project(_arg2.camera, _arg2);
}
override public function project(_arg1:RenderSessionData):void{
var _local2:Array;
var _local3:DisplayObject3D;
var _local4:Number;
_arg1.camera.transformView();
_local2 = _arg1.scene.objects;
_local4 = _local2.length;
if ((_arg1.camera is IObjectCuller)){
for each (_local3 in _local2) {
if (_local3.visible){
if (_arg1.viewPort.viewportObjectFilter){
if (_arg1.viewPort.viewportObjectFilter.testObject(_local3)){
_local3.view.calculateMultiply4x4(_arg1.camera.eye, _local3.transform);
projectObject(_local3, _arg1);
} else {
_arg1.renderStatistics.filteredObjects++;
};
} else {
_local3.view.calculateMultiply4x4(_arg1.camera.eye, _local3.transform);
projectObject(_local3, _arg1);
};
};
};
} else {
for each (_local3 in _local2) {
if (_local3.visible){
if (_arg1.viewPort.viewportObjectFilter){
if (_arg1.viewPort.viewportObjectFilter.testObject(_local3)){
_local3.view.calculateMultiply(_arg1.camera.eye, _local3.transform);
projectObject(_local3, _arg1);
} else {
_arg1.renderStatistics.filteredObjects++;
};
} else {
_local3.view.calculateMultiply(_arg1.camera.eye, _local3.transform);
projectObject(_local3, _arg1);
};
};
};
};
}
}
}//package org.papervision3d.core.render.project
Section 67
//ProjectionPipeline (org.papervision3d.core.render.project.ProjectionPipeline)
package org.papervision3d.core.render.project {
import org.papervision3d.core.render.data.*;
public class ProjectionPipeline {
public function project(_arg1:RenderSessionData):void{
}
}
}//package org.papervision3d.core.render.project
Section 68
//BasicRenderSorter (org.papervision3d.core.render.sort.BasicRenderSorter)
package org.papervision3d.core.render.sort {
public class BasicRenderSorter implements IRenderSorter {
public function sort(_arg1:Array):void{
_arg1.sortOn("screenDepth", Array.NUMERIC);
}
}
}//package org.papervision3d.core.render.sort
Section 69
//IRenderSorter (org.papervision3d.core.render.sort.IRenderSorter)
package org.papervision3d.core.render.sort {
public interface IRenderSorter {
function sort(_arg1:Array):void;
}
}//package org.papervision3d.core.render.sort
Section 70
//AbstractRenderEngine (org.papervision3d.core.render.AbstractRenderEngine)
package org.papervision3d.core.render {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.view.*;
import org.papervision3d.core.render.command.*;
import flash.events.*;
public class AbstractRenderEngine extends EventDispatcher implements IRenderEngine {
public function AbstractRenderEngine(_arg1:IEventDispatcher=null){
super(_arg1);
}
public function removeFromRenderList(_arg1:IRenderListItem):int{
return (0);
}
public function addToRenderList(_arg1:IRenderListItem):int{
return (0);
}
public function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics{
return (null);
}
}
}//package org.papervision3d.core.render
Section 71
//IRenderEngine (org.papervision3d.core.render.IRenderEngine)
package org.papervision3d.core.render {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.view.*;
import org.papervision3d.core.render.command.*;
public interface IRenderEngine {
function addToRenderList(_arg1:IRenderListItem):int;
function removeFromRenderList(_arg1:IRenderListItem):int;
function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics;
}
}//package org.papervision3d.core.render
Section 72
//IVirtualMouseEvent (org.papervision3d.core.utils.virtualmouse.IVirtualMouseEvent)
package org.papervision3d.core.utils.virtualmouse {
public interface IVirtualMouseEvent {
}
}//package org.papervision3d.core.utils.virtualmouse
Section 73
//VirtualMouse (org.papervision3d.core.utils.virtualmouse.VirtualMouse)
package org.papervision3d.core.utils.virtualmouse {
import flash.display.*;
import flash.geom.*;
import com.blitzagency.xray.logger.*;
import flash.events.*;
import flash.utils.*;
import org.papervision3d.core.components.as3.utils.*;
public class VirtualMouse extends EventDispatcher {
private var _container:Sprite;
private var lastDownTarget:DisplayObject;
private var target:InteractiveObject;
private var updateMouseDown:Boolean;// = false
private var eventEvent:Class;
private var _lastEvent:Event;
private var mouseEventEvent:Class;
private var location:Point;
private var delta:int;// = 0
private var disabledEvents:Object;
private var log:XrayLog;
private var ignoredInstances:Dictionary;
private var isLocked:Boolean;// = false
private var lastWithinStage:Boolean;// = true
private var lastLocation:Point;
private var isDoubleClickEvent:Boolean;// = false
private var lastMouseDown:Boolean;// = false
private var altKey:Boolean;// = false
private var _useNativeEvents:Boolean;// = false
private var ctrlKey:Boolean;// = false
private var shiftKey:Boolean;// = false
private var _stage:Stage;
public static const UPDATE:String = "update";
private static var _mouseIsDown:Boolean = false;
public function VirtualMouse(_arg1:Stage=null, _arg2:Sprite=null, _arg3:Number=0, _arg4:Number=0){
altKey = false;
ctrlKey = false;
shiftKey = false;
delta = 0;
isLocked = false;
isDoubleClickEvent = false;
disabledEvents = new Object();
ignoredInstances = new Dictionary(true);
lastMouseDown = false;
updateMouseDown = false;
lastWithinStage = true;
_useNativeEvents = false;
eventEvent = VirtualMouseEvent;
mouseEventEvent = VirtualMouseMouseEvent;
log = new XrayLog();
super();
this.stage = _arg1;
this.container = _arg2;
location = new Point(_arg3, _arg4);
lastLocation = location.clone();
addEventListener(UPDATE, handleUpdate);
update();
}
public function get mouseIsDown():Boolean{
return (_mouseIsDown);
}
public function get stage():Stage{
return (_stage);
}
public function exitContainer():void{
var _local1:Point;
_local1 = target.globalToLocal(location);
if (!disabledEvents[MouseEvent.MOUSE_OUT]){
_lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
container.dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta));
dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta));
};
if (!disabledEvents[MouseEvent.ROLL_OUT]){
_lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
container.dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta));
dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta));
};
if (target != container){
if (!disabledEvents[MouseEvent.MOUSE_OUT]){
_lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
target.dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta));
dispatchEvent(new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta));
};
if (!disabledEvents[MouseEvent.ROLL_OUT]){
_lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
target.dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta));
dispatchEvent(new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local1.x, _local1.y, container, ctrlKey, altKey, shiftKey, _mouseIsDown, delta));
};
};
target = _stage;
}
public function release():void{
updateMouseDown = true;
_mouseIsDown = false;
if (!isLocked){
update();
};
}
public function click():void{
press();
release();
}
public function get container():Sprite{
return (_container);
}
public function set container(_arg1:Sprite):void{
_container = _arg1;
}
public function get y():Number{
return (location.y);
}
public function set x(_arg1:Number):void{
location.x = _arg1;
if (!isLocked){
update();
};
}
public function disableEvent(_arg1:String):void{
disabledEvents[_arg1] = true;
}
public function get lastEvent():Event{
return (_lastEvent);
}
private function handleUpdate(_arg1:Event):void{
var _local2:Point;
var _local3:Array;
var _local4:InteractiveObject;
var _local5:DisplayObject;
var _local6:int;
var _local7:Point;
var _local8:Point;
var _local9:Boolean;
if (!container){
return;
};
_local2 = CoordinateTools.localToLocal(container, stage, location);
_local3 = container.getObjectsUnderPoint(location);
_local6 = _local3.length;
while (_local6--) {
_local5 = _local3[_local6];
while (_local5) {
if (ignoredInstances[_local5]){
_local4 = null;
break;
};
if (((_local4) && ((_local5 is SimpleButton)))){
_local4 = null;
} else {
if (((_local4) && (!(DisplayObjectContainer(_local5).mouseChildren)))){
_local4 = null;
};
};
if (((((!(_local4)) && ((_local5 is InteractiveObject)))) && (InteractiveObject(_local5).mouseEnabled))){
_local4 = InteractiveObject(_local5);
};
_local5 = _local5.parent;
};
if (_local4){
break;
};
};
if (!_local4){
_local4 = _stage;
};
_local7 = target.globalToLocal(location);
_local8 = _local4.globalToLocal(location);
if (((!((lastLocation.x == location.x))) || (!((lastLocation.y == location.y))))){
_local9 = false;
if (stage){
_local9 = (((((((location.x >= 0)) && ((location.y >= 0)))) && ((location.x <= stage.stageWidth)))) && ((location.y <= stage.stageHeight)));
};
if (((((!(_local9)) && (lastWithinStage))) && (!(disabledEvents[Event.MOUSE_LEAVE])))){
_lastEvent = new eventEvent(Event.MOUSE_LEAVE, false, false);
stage.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
if (((_local9) && (!(disabledEvents[MouseEvent.MOUSE_MOVE])))){
_lastEvent = new mouseEventEvent(MouseEvent.MOUSE_MOVE, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
_local4.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
lastWithinStage = _local9;
};
if (_local4 != target){
if (!disabledEvents[MouseEvent.MOUSE_OUT]){
_lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OUT, true, false, _local7.x, _local7.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
target.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
if (!disabledEvents[MouseEvent.ROLL_OUT]){
_lastEvent = new mouseEventEvent(MouseEvent.ROLL_OUT, false, false, _local7.x, _local7.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
target.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
if (!disabledEvents[MouseEvent.MOUSE_OVER]){
_lastEvent = new mouseEventEvent(MouseEvent.MOUSE_OVER, true, false, _local8.x, _local8.y, target, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
_local4.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
if (!disabledEvents[MouseEvent.ROLL_OVER]){
_lastEvent = new mouseEventEvent(MouseEvent.ROLL_OVER, false, false, _local8.x, _local8.y, target, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
_local4.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
};
if (updateMouseDown){
if (_mouseIsDown){
if (!disabledEvents[MouseEvent.MOUSE_DOWN]){
_lastEvent = new mouseEventEvent(MouseEvent.MOUSE_DOWN, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
_local4.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
lastDownTarget = _local4;
updateMouseDown = false;
} else {
if (!disabledEvents[MouseEvent.MOUSE_UP]){
_lastEvent = new mouseEventEvent(MouseEvent.MOUSE_UP, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
_local4.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
if (((!(disabledEvents[MouseEvent.CLICK])) && ((_local4 == lastDownTarget)))){
_lastEvent = new mouseEventEvent(MouseEvent.CLICK, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
_local4.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
lastDownTarget = null;
updateMouseDown = false;
};
};
if (((((isDoubleClickEvent) && (!(disabledEvents[MouseEvent.DOUBLE_CLICK])))) && (_local4.doubleClickEnabled))){
_lastEvent = new mouseEventEvent(MouseEvent.DOUBLE_CLICK, true, false, _local8.x, _local8.y, _local4, ctrlKey, altKey, shiftKey, _mouseIsDown, delta);
_local4.dispatchEvent(_lastEvent);
dispatchEvent(_lastEvent);
};
lastLocation = location.clone();
lastMouseDown = _mouseIsDown;
target = _local4;
}
public function getLocation():Point{
return (location.clone());
}
public function get x():Number{
return (location.x);
}
public function lock():void{
isLocked = true;
}
public function get useNativeEvents():Boolean{
return (_useNativeEvents);
}
public function setLocation(_arg1, _arg2=null):void{
var _local3:Point;
if ((_arg1 is Point)){
_local3 = (_arg1 as Point);
trace(_local3);
location.x = _local3.x;
location.y = _local3.y;
} else {
location.x = Number(_arg1);
location.y = Number(_arg2);
};
if (!isLocked){
update();
};
}
private function keyHandler(_arg1:KeyboardEvent):void{
altKey = _arg1.altKey;
ctrlKey = _arg1.ctrlKey;
shiftKey = _arg1.shiftKey;
}
public function unignore(_arg1:DisplayObject):void{
if ((_arg1 in ignoredInstances)){
delete ignoredInstances[_arg1];
};
}
public function doubleClick():void{
if (isLocked){
release();
} else {
click();
press();
isDoubleClickEvent = true;
release();
isDoubleClickEvent = false;
};
}
public function update():void{
dispatchEvent(new Event(UPDATE, false, false));
}
public function ignore(_arg1:DisplayObject):void{
ignoredInstances[_arg1] = true;
}
public function unlock():void{
isLocked = false;
update();
}
public function enableEvent(_arg1:String):void{
if ((_arg1 in disabledEvents)){
delete disabledEvents[_arg1];
};
}
public function press():void{
updateMouseDown = true;
_mouseIsDown = true;
if (!isLocked){
update();
};
}
public function set useNativeEvents(_arg1:Boolean):void{
if (_arg1 == _useNativeEvents){
return;
};
_useNativeEvents = _arg1;
if (_useNativeEvents){
eventEvent = VirtualMouseEvent;
mouseEventEvent = VirtualMouseMouseEvent;
} else {
eventEvent = Event;
mouseEventEvent = MouseEvent;
};
}
public function set y(_arg1:Number):void{
location.y = _arg1;
if (!isLocked){
update();
};
}
public function set stage(_arg1:Stage):void{
var _local2:Boolean;
if (_stage){
_local2 = true;
_stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
_stage.removeEventListener(KeyboardEvent.KEY_UP, keyHandler);
} else {
_local2 = false;
};
_stage = _arg1;
if (_stage){
_stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler);
_stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
target = _stage;
if (!_local2){
update();
};
};
}
}
}//package org.papervision3d.core.utils.virtualmouse
Section 74
//VirtualMouseEvent (org.papervision3d.core.utils.virtualmouse.VirtualMouseEvent)
package org.papervision3d.core.utils.virtualmouse {
import flash.events.*;
public class VirtualMouseEvent extends Event implements IVirtualMouseEvent {
public function VirtualMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
}
}//package org.papervision3d.core.utils.virtualmouse
Section 75
//VirtualMouseMouseEvent (org.papervision3d.core.utils.virtualmouse.VirtualMouseMouseEvent)
package org.papervision3d.core.utils.virtualmouse {
import flash.display.*;
import flash.events.*;
public class VirtualMouseMouseEvent extends MouseEvent implements IVirtualMouseEvent {
public function VirtualMouseMouseEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:InteractiveObject=null, _arg7:Boolean=false, _arg8:Boolean=false, _arg9:Boolean=false, _arg10:Boolean=false, _arg11:int=0){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11);
}
}
}//package org.papervision3d.core.utils.virtualmouse
Section 76
//InteractiveSceneManager (org.papervision3d.core.utils.InteractiveSceneManager)
package org.papervision3d.core.utils {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.view.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.objects.*;
import com.blitzagency.xray.logger.*;
import flash.events.*;
import org.papervision3d.events.*;
import org.papervision3d.core.utils.virtualmouse.*;
import org.papervision3d.materials.*;
public class InteractiveSceneManager extends EventDispatcher {
protected var log:XrayLog;
public var container:Sprite;
public var debug:Boolean;// = false
public var mouse3D:Mouse3D;
public var enableOverOut:Boolean;// = true
public var currentMaterial:MaterialObject3D;
public var currentDisplayObject3D:DisplayObject3D;
public var virtualMouse:VirtualMouse;
public var viewport:Viewport3D;
public var renderHitData:RenderHitData;
public var currentMouseDO3D:DisplayObject3D;// = null
public static var MOUSE_IS_DOWN:Boolean = false;
public function InteractiveSceneManager(_arg1:Viewport3D){
virtualMouse = new VirtualMouse();
mouse3D = new Mouse3D();
enableOverOut = true;
currentMouseDO3D = null;
debug = false;
log = new XrayLog();
super();
this.viewport = _arg1;
this.container = _arg1.containerSprite;
init();
}
protected function resolveRenderHitData():void{
var _local1:Point;
_local1 = new Point();
_local1.x = container.mouseX;
_local1.y = container.mouseY;
renderHitData = (viewport.hitTestPoint2D(_local1) as RenderHitData);
}
public function initListeners():void{
if (viewport.interactive){
container.addEventListener(MouseEvent.MOUSE_DOWN, handleMousePress);
container.addEventListener(MouseEvent.MOUSE_UP, handleMouseRelease);
container.addEventListener(MouseEvent.CLICK, handleMouseClick);
container.stage.addEventListener(MouseEvent.MOUSE_MOVE, handleMouseMove);
};
}
public function init():void{
if (container){
if (container.stage){
initVirtualMouse();
} else {
container.addEventListener(Event.ADDED_TO_STAGE, handleAddedToStage);
};
};
}
protected function dispatchObjectEvent(_arg1:String, _arg2:DisplayObject3D):void{
var _local3:Number;
var _local4:Number;
if (debug){
log.debug(_arg1, _arg2.name);
};
if (((renderHitData) && (renderHitData.hasHit))){
_local3 = (renderHitData.u) ? renderHitData.u : 0;
_local4 = (renderHitData.v) ? renderHitData.v : 0;
dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container, (renderHitData.renderable as Triangle3D), _local3, _local4));
_arg2.dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container, (renderHitData.renderable as Triangle3D), _local3, _local4));
} else {
dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container));
if (_arg2){
_arg2.dispatchEvent(new InteractiveScene3DEvent(_arg1, _arg2, container));
};
};
}
protected function handleMouseClick(_arg1:MouseEvent):void{
if ((_arg1 is IVirtualMouseEvent)){
return;
};
if (((renderHitData) && (renderHitData.hasHit))){
dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_CLICK, currentDisplayObject3D);
};
}
public function updateRenderHitData():void{
resolveRenderHitData();
currentDisplayObject3D = renderHitData.displayObject3D;
currentMaterial = renderHitData.material;
manageOverOut();
}
protected function handleMouseOver(_arg1:DisplayObject3D):void{
dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_OVER, _arg1);
}
protected function handleMouseRelease(_arg1:MouseEvent):void{
if ((_arg1 is IVirtualMouseEvent)){
return;
};
MOUSE_IS_DOWN = false;
if (virtualMouse){
virtualMouse.release();
};
if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){
mouse3D.updatePosition(renderHitData);
};
if (((renderHitData) && (renderHitData.hasHit))){
dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_RELEASE, currentDisplayObject3D);
};
}
protected function handleAddedToStage(_arg1:Event):void{
initVirtualMouse();
initListeners();
}
protected function handleMouseMove(_arg1:MouseEvent):void{
var _local2:MovieMaterial;
updateRenderHitData();
if ((_arg1 is IVirtualMouseEvent)){
return;
};
if (((virtualMouse) && (renderHitData))){
_local2 = (currentMaterial as MovieMaterial);
if (_local2){
virtualMouse.container = (_local2.movie as Sprite);
};
if (virtualMouse.container){
virtualMouse.setLocation(renderHitData.u, renderHitData.v);
};
if (((((Mouse3D.enabled) && (renderHitData))) && (renderHitData.hasHit))){
mouse3D.updatePosition(renderHitData);
};
dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_MOVE, currentDisplayObject3D);
} else {
if (((renderHitData) && (renderHitData.hasHit))){
dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_MOVE, currentDisplayObject3D);
};
};
}
protected function handleMouseOut(_arg1:DisplayObject3D):void{
var _local2:MovieMaterial;
if (_arg1){
_local2 = (_arg1.material as MovieMaterial);
if (_local2){
virtualMouse.exitContainer();
};
};
dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_OUT, _arg1);
}
protected function manageOverOut():void{
if (!enableOverOut){
return;
};
if (((renderHitData) && (renderHitData.hasHit))){
if (((!(currentMouseDO3D)) && (currentDisplayObject3D))){
handleMouseOver(currentDisplayObject3D);
currentMouseDO3D = currentDisplayObject3D;
} else {
if (((currentMouseDO3D) && (!((currentMouseDO3D == currentDisplayObject3D))))){
handleMouseOut(currentMouseDO3D);
handleMouseOver(currentDisplayObject3D);
currentMouseDO3D = currentDisplayObject3D;
};
};
} else {
if (currentMouseDO3D != null){
handleMouseOut(currentMouseDO3D);
currentMouseDO3D = null;
};
};
}
protected function initVirtualMouse():void{
virtualMouse.stage = container.stage;
virtualMouse.container = container;
}
protected function handleMousePress(_arg1:MouseEvent):void{
if ((_arg1 is IVirtualMouseEvent)){
return;
};
MOUSE_IS_DOWN = true;
if (virtualMouse){
virtualMouse.press();
};
if (((((Mouse3D.enabled) && (renderHitData))) && (!((renderHitData.renderable == null))))){
mouse3D.updatePosition(renderHitData);
};
if (((renderHitData) && (renderHitData.hasHit))){
dispatchObjectEvent(InteractiveScene3DEvent.OBJECT_PRESS, currentDisplayObject3D);
};
}
}
}//package org.papervision3d.core.utils
Section 77
//Mouse3D (org.papervision3d.core.utils.Mouse3D)
package org.papervision3d.core.utils {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
public class Mouse3D extends DisplayObject3D {
public static var enabled:Boolean = false;
private static var UP:Number3D = new Number3D(0, 1, 0);
public function Mouse3D(_arg1:Object=null):void{
}
public function updatePosition(_arg1:RenderHitData):void{
var _local2:Triangle3D;
var _local3:Number3D;
var _local4:Number3D;
var _local5:Number3D;
var _local6:Matrix3D;
var _local7:Number3D;
var _local8:Number3D;
var _local9:Matrix3D;
_local2 = (_arg1.renderable as Triangle3D);
_local3 = new Number3D(0, 0, 0);
_local4 = new Number3D(_local2.faceNormal.x, _local2.faceNormal.y, _local2.faceNormal.z);
_local5 = Number3D.sub(_local4, _local3);
_local5.normalize();
if (_local5.modulo > 0.1){
_local7 = Number3D.cross(_local5, UP);
_local7.normalize();
_local8 = Number3D.cross(_local5, _local7);
_local8.normalize();
_local9 = this.transform;
_local9.n11 = _local7.x;
_local9.n21 = _local7.y;
_local9.n31 = _local7.z;
_local9.n12 = -(_local8.x);
_local9.n22 = -(_local8.y);
_local9.n32 = -(_local8.z);
_local9.n13 = _local5.x;
_local9.n23 = _local5.y;
_local9.n33 = _local5.z;
};
_local6 = Matrix3D.IDENTITY;
this.transform = Matrix3D.multiply(_local2.instance.world, _local9);
x = _arg1.x;
y = _arg1.y;
z = _arg1.z;
}
}
}//package org.papervision3d.core.utils
Section 78
//StopWatch (org.papervision3d.core.utils.StopWatch)
package org.papervision3d.core.utils {
import flash.events.*;
import flash.utils.*;
public class StopWatch extends EventDispatcher {
private var startTime:int;
private var elapsedTime:int;
private var stopTime:int;
private var isRunning:Boolean;
public function stop():int{
if (isRunning){
stopTime = getTimer();
elapsedTime = (stopTime - startTime);
isRunning = false;
return (elapsedTime);
};
return (0);
}
public function start():void{
if (!isRunning){
startTime = getTimer();
isRunning = true;
};
}
public function reset():void{
isRunning = false;
}
}
}//package org.papervision3d.core.utils
Section 79
//IViewport3D (org.papervision3d.core.view.IViewport3D)
package org.papervision3d.core.view {
public interface IViewport3D {
function updateAfterRender():void;
function updateBeforeRender():void;
}
}//package org.papervision3d.core.view
Section 80
//InteractiveScene3DEvent (org.papervision3d.events.InteractiveScene3DEvent)
package org.papervision3d.events {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import org.papervision3d.objects.*;
import flash.events.*;
public class InteractiveScene3DEvent extends Event {
public var sprite:Sprite;// = null
public var displayObject3D:DisplayObject3D;// = null
public var face3d:Triangle3D;// = null
public var renderHitData:RenderHitData;
public var x:Number;// = 0
public var y:Number;// = 0
public static const OBJECT_ADDED:String = "objectAdded";
public static const OBJECT_PRESS:String = "mousePress";
public static const OBJECT_RELEASE:String = "mouseRelease";
public static const OBJECT_CLICK:String = "mouseClick";
public static const OBJECT_RELEASE_OUTSIDE:String = "mouseReleaseOutside";
public static const OBJECT_OUT:String = "mouseOut";
public static const OBJECT_MOVE:String = "mouseMove";
public static const OBJECT_OVER:String = "mouseOver";
public function InteractiveScene3DEvent(_arg1:String, _arg2:DisplayObject3D=null, _arg3:Sprite=null, _arg4:Triangle3D=null, _arg5:Number=0, _arg6:Number=0, _arg7:RenderHitData=null, _arg8:Boolean=false, _arg9:Boolean=false){
displayObject3D = null;
sprite = null;
face3d = null;
x = 0;
y = 0;
super(_arg1, _arg8, _arg9);
this.displayObject3D = _arg2;
this.sprite = _arg3;
this.face3d = _arg4;
this.x = _arg5;
this.y = _arg6;
this.renderHitData = _arg7;
}
}
}//package org.papervision3d.events
Section 81
//RendererEvent (org.papervision3d.events.RendererEvent)
package org.papervision3d.events {
import org.papervision3d.core.render.data.*;
import flash.events.*;
public class RendererEvent extends Event {
public var renderSessionData:RenderSessionData;
public static const RENDER_DONE:String = "renderDone";
public function RendererEvent(_arg1:String, _arg2:RenderSessionData){
super(_arg1);
this.renderSessionData = _arg2;
}
}
}//package org.papervision3d.events
Section 82
//PointLight3D (org.papervision3d.lights.PointLight3D)
package org.papervision3d.lights {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.math.*;
public class PointLight3D extends LightObject3D {
public static var DEFAULT_POS:Number3D = new Number3D(0, 0, -1000);
public function PointLight3D(_arg1:Boolean=false, _arg2:Boolean=false){
super(_arg1, _arg2);
x = DEFAULT_POS.x;
y = DEFAULT_POS.y;
z = DEFAULT_POS.z;
}
}
}//package org.papervision3d.lights
Section 83
//GouraudMaterial (org.papervision3d.materials.shadematerials.GouraudMaterial)
package org.papervision3d.materials.shadematerials {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.core.math.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.core.render.material.*;
import org.papervision3d.core.render.draw.*;
import org.papervision3d.core.material.*;
public class GouraudMaterial extends AbstractSmoothShadeMaterial implements ITriangleDrawer, IUpdateBeforeMaterial {
private var gouraudMap:BitmapData;
public function GouraudMaterial(_arg1:LightObject3D, _arg2:int=0xFFFFFF, _arg3:int=0){
this.light = _arg1;
gouraudMap = LightMaps.getGouraudMap(_arg2, _arg3);
}
override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
lightMatrix = Matrix3D(lightMatrices[_arg1.instance]);
_local6 = ((((_arg1.v0.normal.x * lightMatrix.n31) + (_arg1.v0.normal.y * lightMatrix.n32)) + (_arg1.v0.normal.z * lightMatrix.n33)) * 0xFF);
transformMatrix.tx = _local6;
transformMatrix.ty = 1;
transformMatrix.a = (((((_arg1.v1.normal.x * lightMatrix.n31) + (_arg1.v1.normal.y * lightMatrix.n32)) + (_arg1.v1.normal.z * lightMatrix.n33)) * 0xFF) - _local6);
transformMatrix.c = (((((_arg1.v2.normal.x * lightMatrix.n31) + (_arg1.v2.normal.y * lightMatrix.n32)) + (_arg1.v2.normal.z * lightMatrix.n33)) * 0xFF) - _local6);
transformMatrix.b = 2;
transformMatrix.d = 3;
transformMatrix.invert();
_local7 = _arg1.v0.vertex3DInstance.x;
_local8 = _arg1.v0.vertex3DInstance.y;
_local9 = _arg1.v1.vertex3DInstance.x;
_local10 = _arg1.v1.vertex3DInstance.y;
_local11 = _arg1.v2.vertex3DInstance.x;
_local12 = _arg1.v2.vertex3DInstance.y;
triMatrix.a = (_local9 - _local7);
triMatrix.b = (_local10 - _local8);
triMatrix.c = (_local11 - _local7);
triMatrix.d = (_local12 - _local8);
triMatrix.tx = _local7;
triMatrix.ty = _local8;
transformMatrix.concat(triMatrix);
_arg2.beginBitmapFill(gouraudMap, transformMatrix, false, false);
_arg2.moveTo(_local7, _local8);
_arg2.lineTo(_local9, _local10);
_arg2.lineTo(_local11, _local12);
_arg2.lineTo(_local7, _local8);
_arg2.endFill();
_arg3.renderStatistics.shadedTriangles++;
}
}
}//package org.papervision3d.materials.shadematerials
Section 84
//ParticleMaterial (org.papervision3d.materials.special.ParticleMaterial)
package org.papervision3d.materials.special {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.core.render.draw.*;
public class ParticleMaterial extends MaterialObject3D implements IParticleDrawer {
public var shape:int;
public static var SHAPE_SQUARE:int = 0;
public static var SHAPE_CIRCLE:int = 1;
public function ParticleMaterial(_arg1:Number, _arg2:Number, _arg3:int=0){
this.shape = _arg3;
this.fillAlpha = _arg2;
this.fillColor = _arg1;
}
public function updateRenderRect(_arg1:Particle):void{
var _local2:Rectangle;
_local2 = _arg1.renderRect;
if (_arg1.size == 0){
_local2.width = 1;
_local2.height = 1;
} else {
_local2.width = (_arg1.renderScale * _arg1.size);
_local2.height = (_arg1.renderScale * _arg1.size);
};
_local2.x = (_arg1.vertex3D.vertex3DInstance.x - (_local2.width / 2));
_local2.y = (_arg1.vertex3D.vertex3DInstance.y - (_local2.width / 2));
}
public function drawParticle(_arg1:Particle, _arg2:Graphics, _arg3:RenderSessionData):void{
var _local4:Rectangle;
_arg2.beginFill(fillColor, fillAlpha);
_local4 = _arg1.renderRect;
if (shape == SHAPE_SQUARE){
_arg2.drawRect(_local4.x, _local4.y, _local4.width, _local4.height);
} else {
if (shape == SHAPE_CIRCLE){
_arg2.drawCircle((_local4.x + (_local4.width / 2)), (_local4.y + (_local4.width / 2)), (_local4.width / 2));
} else {
trace("warning - Particle material has no valid shape - Must be ParticleMaterial.SHAPE_SQUARE or ParticleMaterial.SHAPE_CIRCLE");
};
};
_arg2.endFill();
_arg3.renderStatistics.particles++;
}
}
}//package org.papervision3d.materials.special
Section 85
//LightMaps (org.papervision3d.materials.utils.LightMaps)
package org.papervision3d.materials.utils {
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
public class LightMaps {
private static var origin:Point = new Point();
public static function getPhongMap(_arg1:int, _arg2:int, _arg3:int, _arg4:int=0xFF, _arg5:int=0xFF):BitmapData{
var _local6:Number;
var _local7:Number;
var _local8:Sprite;
var _local9:Matrix;
var _local10:BitmapData;
_local6 = _arg4;
_local7 = _arg5;
_local8 = new Sprite();
_local9 = new Matrix();
_local9.createGradientBox(_local6, _local6, 0, 0, 0);
_local8.graphics.beginGradientFill(GradientType.RADIAL, [_arg1, _arg2, _arg2], [1, 1, 1], [0, (0xFF - _arg3), 0xFF], _local9);
_local8.graphics.drawRect(0, 0, _local6, _local6);
_local8.graphics.endFill();
_local10 = new BitmapData(_local6, _local6, false, 0xFF);
_local10.draw(_local8);
return (_local10);
}
public static function getCellMap(_arg1:int, _arg2:int, _arg3:int):BitmapData{
var _local4:BitmapData;
var _local5:Number;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:Array;
var _local10:Array;
var _local11:Array;
var _local12:int;
_local4 = LightMaps.getPhongMap(_arg1, _arg2, 0, 0xFF, 0xFF);
_local5 = 0;
_local6 = ((_arg1 & 0xFF0000) >> 16);
_local7 = ((_arg2 & 0xFF0000) >> 16);
_local8 = (_local7 - _local6);
_local9 = new Array();
_local10 = new Array();
_local11 = new Array();
_local12 = 0;
while (_local12 <= 0xFF) {
_local9[_local12] = ((_local12 - (_local12 % Math.round((0x0100 / _arg3)))) << 16);
_local10[_local12] = ((_local12 - (_local12 % Math.round((0x0100 / _arg3)))) << 8);
_local11[_local12] = (_local12 - (_local12 % Math.round((0x0100 / _arg3))));
_local12++;
};
_local4.paletteMap(_local4, _local4.rect, origin, _local9, _local10, _local11);
_local4.applyFilter(_local4, _local4.rect, origin, new BlurFilter(2, 2, 2));
return (_local4);
}
public static function getGouraudMap(_arg1:int, _arg2:int):BitmapData{
var _local3:BitmapData;
var _local4:Sprite;
var _local5:Matrix;
_local3 = new BitmapData(0x0100, 3, false, 0xFFFFFF);
_local4 = new Sprite();
_local5 = new Matrix();
_local5.createGradientBox(0x0100, 3, 0, 0, 0);
_local4.graphics.beginGradientFill(GradientType.LINEAR, [_arg2, _arg1], [1, 1], [0, 0xFF], _local5);
_local4.graphics.drawRect(0, 0, 0x0100, 3);
_local4.graphics.endFill();
_local3.draw(_local4);
return (_local3);
}
public static function getFlatMapArray(_arg1:int, _arg2:int, _arg3:int):Array{
var _local4:Array;
var _local5:BitmapData;
var _local6:Sprite;
var _local7:Matrix;
var _local8:int;
_local4 = new Array();
_local5 = new BitmapData(0xFF, 1, false, 0);
_local6 = new Sprite();
_local7 = new Matrix();
_local7.createGradientBox(0xFF, 1, 0, 0, 0);
_local6.graphics.beginGradientFill(GradientType.LINEAR, [_arg1, _arg2], [1, 1], [0, 0xFF], _local7);
_local6.graphics.drawRect(0, 0, 0xFF, 1);
_local6.graphics.endFill();
_local5.draw(_local6);
_local8 = 0xFF;
while (_local8--) {
_local4.push(_local5.getPixel(_local8, 0));
};
return (_local4);
}
public static function getFlatMap(_arg1:int, _arg2:int, _arg3:int):BitmapData{
var _local4:Array;
var _local5:BitmapData;
var _local6:Sprite;
var _local7:Matrix;
_local4 = new Array();
_local5 = new BitmapData(0xFF, 1, false, 0);
_local6 = new Sprite();
_local7 = new Matrix();
_local7.createGradientBox(0xFF, 1, 0, 0, 0);
_local6.graphics.beginGradientFill(GradientType.LINEAR, [_arg2, _arg1], [1, 1], [0, 0xFF], _local7);
_local6.graphics.drawRect(0, 0, 0xFF, 1);
_local6.graphics.endFill();
_local5.draw(_local6);
return (_local5);
}
}
}//package org.papervision3d.materials.utils
Section 86
//LightMatrix (org.papervision3d.materials.utils.LightMatrix)
package org.papervision3d.materials.utils {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.math.*;
import org.papervision3d.objects.*;
import org.papervision3d.lights.*;
public class LightMatrix {
private static var _targetPos:Number3D;
private static var _lightSide:Number3D;
private static var _lightUp:Number3D;
private static var _lightDir:Number3D;
private static var lightMatrix:Matrix3D = Matrix3D.IDENTITY;
protected static var UP:Number3D = new Number3D(0, 1, 0);
private static var _lightPos:Number3D;
public static function getLightMatrix(_arg1:LightObject3D, _arg2:DisplayObject3D, _arg3:RenderSessionData):Matrix3D{
var _local4:Matrix3D;
var _local5:Matrix3D;
var _local6:Matrix3D;
_local4 = Matrix3D.IDENTITY;
if (_arg1 == null){
_arg1 = new PointLight3D();
_arg1.copyPosition(_arg3.camera);
};
_targetPos = new Number3D();
_lightPos = new Number3D();
_lightDir = new Number3D();
_lightUp = new Number3D();
_lightSide = new Number3D();
_local5 = _arg1.transform;
_local6 = _arg2.world;
_lightPos.x = -(_local5.n14);
_lightPos.y = -(_local5.n24);
_lightPos.z = -(_local5.n34);
_targetPos.x = -(_local6.n14);
_targetPos.y = -(_local6.n24);
_targetPos.z = -(_local6.n34);
_lightDir.x = (_targetPos.x - _lightPos.x);
_lightDir.y = (_targetPos.y - _lightPos.y);
_lightDir.z = (_targetPos.z - _lightPos.z);
Matrix3D.multiplyVector3x3(Matrix3D.inverse(_arg2.world), _lightDir);
_lightDir.normalize();
_lightSide.x = ((_lightDir.y * UP.z) - (_lightDir.z * UP.y));
_lightSide.y = ((_lightDir.z * UP.x) - (_lightDir.x * UP.z));
_lightSide.z = ((_lightDir.x * UP.y) - (_lightDir.y * UP.x));
_lightSide.normalize();
_lightUp.x = ((_lightSide.y * _lightDir.z) - (_lightSide.z * _lightDir.y));
_lightUp.y = ((_lightSide.z * _lightDir.x) - (_lightSide.x * _lightDir.z));
_lightUp.z = ((_lightSide.x * _lightDir.y) - (_lightSide.y * _lightDir.x));
_lightUp.normalize();
if (_arg1.flipped){
_lightDir.x = -(_lightDir.x);
_lightDir.y = -(_lightDir.y);
_lightDir.z = -(_lightDir.z);
};
_local4.n11 = _lightSide.x;
_local4.n12 = _lightSide.y;
_local4.n13 = _lightSide.z;
_local4.n21 = _lightUp.x;
_local4.n22 = _lightUp.y;
_local4.n23 = _lightUp.z;
_local4.n31 = _lightDir.x;
_local4.n32 = _lightDir.y;
_local4.n33 = _lightDir.z;
return (_local4);
}
}
}//package org.papervision3d.materials.utils
Section 87
//MaterialsList (org.papervision3d.materials.utils.MaterialsList)
package org.papervision3d.materials.utils {
import org.papervision3d.core.proto.*;
import flash.utils.*;
public class MaterialsList {
protected var _materials:Dictionary;
public var materialsByName:Dictionary;
private var _materialsTotal:int;
public function MaterialsList(_arg1=null):void{
var _local2:String;
var _local3:String;
super();
this.materialsByName = new Dictionary(true);
this._materials = new Dictionary(false);
this._materialsTotal = 0;
if (_arg1){
if ((_arg1 is Array)){
for (_local2 in _arg1) {
this.addMaterial(_arg1[_local2]);
};
} else {
if ((_arg1 is Object)){
for (_local3 in _arg1) {
this.addMaterial(_arg1[_local3], _local3);
};
};
};
};
}
public function get numMaterials():int{
return (_materialsTotal);
}
public function addMaterial(_arg1:MaterialObject3D, _arg2:String=null):MaterialObject3D{
_arg2 = ((((_arg2) || (_arg1.name))) || (String(_arg1.id)));
this._materials[_arg1] = _arg2;
this.materialsByName[_arg2] = _arg1;
this._materialsTotal++;
return (_arg1);
}
public function removeMaterial(_arg1:MaterialObject3D):MaterialObject3D{
delete this.materialsByName[this._materials[_arg1]];
delete this._materials[_arg1];
return (_arg1);
}
public function toString():String{
var _local1:String;
var _local2:MaterialObject3D;
_local1 = "";
for each (_local2 in this.materialsByName) {
_local1 = (_local1 + (this._materials[_local2] + "\n"));
};
return (_local1);
}
public function removeMaterialByName(_arg1:String):MaterialObject3D{
return (removeMaterial(getMaterialByName(_arg1)));
}
public function clone():MaterialsList{
var _local1:MaterialsList;
var _local2:MaterialObject3D;
_local1 = new MaterialsList();
for each (_local2 in this.materialsByName) {
_local1.addMaterial(_local2.clone(), this._materials[_local2]);
};
return (_local1);
}
public function getMaterialByName(_arg1:String):MaterialObject3D{
return ((this.materialsByName[_arg1]) ? this.materialsByName[_arg1] : this.materialsByName["all"]);
}
}
}//package org.papervision3d.materials.utils
Section 88
//BitmapMaterial (org.papervision3d.materials.BitmapMaterial)
package org.papervision3d.materials {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.core.render.draw.*;
import flash.utils.*;
import org.papervision3d.*;
import org.papervision3d.core.material.*;
public class BitmapMaterial extends TriangleMaterial implements ITriangleDrawer {
private var _precise:Boolean;
protected var tempTriangleMatrix:Matrix;
public var uvMatrices:Dictionary;
public var focus:Number;// = 200
protected var _texture:Object;
public var minimumRenderSize:Number;// = 2
public var precision:Number;// = 8
protected static var _triMap:Matrix;
public static var AUTO_MIP_MAPPING:Boolean = false;
protected static var _localMatrix:Matrix = new Matrix();
public static var MIP_MAP_DEPTH:Number = 8;
protected static var _triMatrix:Matrix = new Matrix();
public function BitmapMaterial(_arg1:BitmapData=null, _arg2:Boolean=false){
focus = 200;
minimumRenderSize = 2;
precision = 8;
uvMatrices = new Dictionary();
tempTriangleMatrix = new Matrix();
super();
if (_arg1){
texture = _arg1;
};
this.precise = _arg2;
}
override public function toString():String{
return (((((("Texture:" + this.texture) + " lineColor:") + this.lineColor) + " lineAlpha:") + this.lineAlpha));
}
protected function extendBitmapEdges(_arg1:BitmapData, _arg2:Number, _arg3:Number):void{
var _local4:Rectangle;
var _local5:Point;
var _local6:int;
_local4 = new Rectangle();
_local5 = new Point();
if (_arg1.width > _arg2){
_local4.x = (_arg2 - 1);
_local4.y = 0;
_local4.width = 1;
_local4.height = _arg3;
_local5.y = 0;
_local6 = _arg2;
while (_local6 < _arg1.width) {
_local5.x = _local6;
_arg1.copyPixels(_arg1, _local4, _local5);
_local6++;
};
};
if (_arg1.height > _arg3){
_local4.x = 0;
_local4.y = (_arg3 - 1);
_local4.width = _arg1.width;
_local4.height = 1;
_local5.x = 0;
_local6 = _arg3;
while (_local6 < _arg1.height) {
_local5.y = _local6;
_arg1.copyPixels(_arg1, _local4, _local5);
_local6++;
};
};
}
public function resetMapping():void{
uvMatrices = new Dictionary();
}
public function set texture(_arg1:Object):void{
if ((_arg1 is BitmapData) == false){
Papervision3D.log("Error: BitmapMaterial.texture requires a BitmapData object for the texture");
return;
};
bitmap = createBitmap(BitmapData(_arg1));
_texture = _arg1;
}
public function renderRec(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number, _arg13:Number, _arg14:Number, _arg15:Number, _arg16:Number, _arg17:Number, _arg18:RenderSessionData, _arg19:BitmapData):void{
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 _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 _local39:Number;
var _local40:Number;
var _local41:Number;
if ((((((_arg10 <= 0)) && ((_arg13 <= 0)))) && ((_arg16 <= 0)))){
return;
};
if ((((((((_arg17 >= 100)) || ((focus == Infinity)))) || (((Math.max(Math.max(_arg8, _arg11), _arg14) - Math.min(Math.min(_arg8, _arg11), _arg14)) < minimumRenderSize)))) || (((Math.max(Math.max(_arg9, _arg12), _arg15) - Math.min(Math.min(_arg9, _arg12), _arg15)) < minimumRenderSize)))){
renderTriangleBitmap(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg11, _arg12, _arg14, _arg15, smooth, tiled, _arg19);
_arg18.renderStatistics.triangles++;
return;
};
_local20 = (focus + _arg10);
_local21 = (focus + _arg13);
_local22 = (focus + _arg16);
_local23 = (2 / (_local20 + _local21));
_local24 = (2 / (_local21 + _local22));
_local25 = (2 / (_local22 + _local20));
_local26 = (((_arg8 * _local20) + (_arg11 * _local21)) * _local23);
_local27 = (((_arg9 * _local20) + (_arg12 * _local21)) * _local23);
_local28 = (((_arg11 * _local21) + (_arg14 * _local22)) * _local24);
_local29 = (((_arg12 * _local21) + (_arg15 * _local22)) * _local24);
_local30 = (((_arg14 * _local22) + (_arg8 * _local20)) * _local25);
_local31 = (((_arg15 * _local22) + (_arg9 * _local20)) * _local25);
_local32 = ((_arg8 + _arg11) - _local26);
_local33 = ((_arg9 + _arg12) - _local27);
_local34 = ((_arg11 + _arg14) - _local28);
_local35 = ((_arg12 + _arg15) - _local29);
_local36 = ((_arg14 + _arg8) - _local30);
_local37 = ((_arg15 + _arg9) - _local31);
_local38 = ((_local32 * _local32) + (_local33 * _local33));
_local39 = ((_local34 * _local34) + (_local35 * _local35));
_local40 = ((_local36 * _local36) + (_local37 * _local37));
if ((((((_local38 <= precision)) && ((_local40 <= precision)))) && ((_local39 <= precision)))){
renderTriangleBitmap(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg11, _arg12, _arg14, _arg15, smooth, tiled, _arg19);
_arg18.renderStatistics.triangles++;
return;
};
if ((((((_local38 > precision)) && ((_local40 > precision)))) && ((_local39 > precision)))){
renderRec(_arg1, (_arg2 * 2), (_arg3 * 2), (_arg4 * 2), (_arg5 * 2), (_arg6 * 2), (_arg7 * 2), _arg8, _arg9, _arg10, (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), (_arg17 + 1), _arg18, _arg19);
renderRec(_arg1, (_arg2 * 2), (_arg3 * 2), (_arg4 * 2), (_arg5 * 2), ((_arg6 * 2) - 1), (_arg7 * 2), (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), _arg11, _arg12, _arg13, (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), (_arg17 + 1), _arg18, _arg19);
renderRec(_arg1, (_arg2 * 2), (_arg3 * 2), (_arg4 * 2), (_arg5 * 2), (_arg6 * 2), ((_arg7 * 2) - 1), (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19);
renderRec(_arg1, (-(_arg2) * 2), (-(_arg3) * 2), (-(_arg4) * 2), (-(_arg5) * 2), ((-(_arg6) * 2) + 1), ((-(_arg7) * 2) + 1), (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), (_arg17 + 1), _arg18, _arg19);
return;
};
_local41 = Math.max(_local38, Math.max(_local40, _local39));
if (_local38 == _local41){
renderRec(_arg1, (_arg2 * 2), (_arg3 * 1), (_arg4 * 2), (_arg5 * 1), (_arg6 * 2), (_arg7 * 1), _arg8, _arg9, _arg10, (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19);
renderRec(_arg1, ((_arg2 * 2) + _arg3), (_arg3 * 1), ((2 * _arg4) + _arg5), (_arg5 * 1), (((_arg6 * 2) + _arg7) - 1), (_arg7 * 1), (_local26 * 0.5), (_local27 * 0.5), ((_arg10 + _arg13) * 0.5), _arg11, _arg12, _arg13, _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19);
return;
};
if (_local40 == _local41){
renderRec(_arg1, (_arg2 * 1), (_arg3 * 2), (_arg4 * 1), (_arg5 * 2), (_arg6 * 1), (_arg7 * 2), _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), (_arg17 + 1), _arg18, _arg19);
renderRec(_arg1, (_arg2 * 1), ((_arg3 * 2) + _arg2), (_arg4 * 1), ((_arg5 * 2) + _arg4), _arg6, (((_arg7 * 2) + _arg6) - 1), (_local30 * 0.5), (_local31 * 0.5), ((_arg16 + _arg10) * 0.5), _arg11, _arg12, _arg13, _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19);
return;
};
renderRec(_arg1, (_arg2 - _arg3), (_arg3 * 2), (_arg4 - _arg5), (_arg5 * 2), (_arg6 - _arg7), (_arg7 * 2), _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), (_arg17 + 1), _arg18, _arg19);
renderRec(_arg1, (2 * _arg2), (_arg3 - _arg2), (_arg4 * 2), (_arg5 - _arg4), (2 * _arg6), (_arg7 - _arg6), _arg8, _arg9, _arg10, (_local28 * 0.5), (_local29 * 0.5), ((_arg13 + _arg16) * 0.5), _arg14, _arg15, _arg16, (_arg17 + 1), _arg18, _arg19);
}
public function transformUV(_arg1:Triangle3D):Matrix{
var _local2:Array;
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:Matrix;
var _local16:Matrix;
if (!_arg1.uv){
Papervision3D.log("MaterialObject3D: transformUV() uv not found!");
} else {
if (bitmap){
_local2 = _arg1.uv;
_local3 = (bitmap.width * maxU);
_local4 = (bitmap.height * maxV);
_local5 = (_local3 * _arg1.uv0.u);
_local6 = (_local4 * (1 - _arg1.uv0.v));
_local7 = (_local3 * _arg1.uv1.u);
_local8 = (_local4 * (1 - _arg1.uv1.v));
_local9 = (_local3 * _arg1.uv2.u);
_local10 = (_local4 * (1 - _arg1.uv2.v));
if ((((((_local5 == _local7)) && ((_local6 == _local8)))) || ((((_local5 == _local9)) && ((_local6 == _local10)))))){
_local5 = (_local5 - ((_local5)>0.05) ? 0.05 : -0.05);
_local6 = (_local6 - ((_local6)>0.07) ? 0.07 : -0.07);
};
if ((((_local9 == _local7)) && ((_local10 == _local8)))){
_local9 = (_local9 - ((_local9)>0.05) ? 0.04 : -0.04);
_local10 = (_local10 - ((_local10)>0.06) ? 0.06 : -0.06);
};
_local11 = (_local7 - _local5);
_local12 = (_local8 - _local6);
_local13 = (_local9 - _local5);
_local14 = (_local10 - _local6);
_local15 = new Matrix(_local11, _local12, _local13, _local14, _local5, _local6);
_local15.invert();
_local16 = ((uvMatrices[_arg1]) || ((uvMatrices[_arg1] = _local15.clone())));
_local16.a = _local15.a;
_local16.b = _local15.b;
_local16.c = _local15.c;
_local16.d = _local15.d;
_local16.tx = _local15.tx;
_local16.ty = _local15.ty;
} else {
Papervision3D.log("MaterialObject3D: transformUV() material.bitmap not found!");
};
};
return (_local16);
}
public function resetUVS():void{
uvMatrices = new Dictionary(false);
}
protected function correctBitmap(_arg1:BitmapData):BitmapData{
var _local2:BitmapData;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Boolean;
_local3 = (1 << MIP_MAP_DEPTH);
_local4 = (_arg1.width / _local3);
_local4 = ((_local4 == uint(_local4))) ? _local4 : (uint(_local4) + 1);
_local5 = (_arg1.height / _local3);
_local5 = ((_local5 == uint(_local5))) ? _local5 : (uint(_local5) + 1);
_local6 = (_local3 * _local4);
_local7 = (_local3 * _local5);
_local8 = true;
if (_local6 > 2880){
_local6 = _arg1.width;
_local8 = false;
};
if (_local7 > 2880){
_local7 = _arg1.height;
_local8 = false;
};
if (!_local8){
Papervision3D.log((("Material " + this.name) + ": Texture too big for mip mapping. Resizing recommended for better performance and quality."));
};
if (((_arg1) && (((!(((_arg1.width % _local3) == 0))) || (!(((_arg1.height % _local3) == 0))))))){
_local2 = new BitmapData(_local6, _local7, _arg1.transparent, 0);
widthOffset = _arg1.width;
heightOffset = _arg1.height;
this.maxU = (_arg1.width / _local6);
this.maxV = (_arg1.height / _local7);
_local2.draw(_arg1);
extendBitmapEdges(_local2, _arg1.width, _arg1.height);
} else {
this.maxU = (this.maxV = 1);
_local2 = _arg1;
};
return (_local2);
}
public function renderTriangleBitmap(_arg1:Graphics, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number, _arg13:Number, _arg14:Boolean, _arg15:Boolean, _arg16:BitmapData):void{
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
_local17 = (_arg10 - _arg8);
_local18 = (_arg11 - _arg9);
_local19 = (_arg12 - _arg8);
_local20 = (_arg13 - _arg9);
tempTriangleMatrix.a = ((_arg2 * _local17) + (_arg3 * _local19));
tempTriangleMatrix.b = ((_arg2 * _local18) + (_arg3 * _local20));
tempTriangleMatrix.c = ((_arg4 * _local17) + (_arg5 * _local19));
tempTriangleMatrix.d = ((_arg4 * _local18) + (_arg5 * _local20));
tempTriangleMatrix.tx = (((_arg6 * _local17) + (_arg7 * _local19)) + _arg8);
tempTriangleMatrix.ty = (((_arg6 * _local18) + (_arg7 * _local20)) + _arg9);
_arg1.beginBitmapFill(_arg16, tempTriangleMatrix, _arg15, _arg14);
_arg1.moveTo(_arg8, _arg9);
_arg1.lineTo(_arg10, _arg11);
_arg1.lineTo(_arg12, _arg13);
_arg1.endFill();
}
public function get texture():Object{
return (this._texture);
}
protected function createBitmap(_arg1:BitmapData):BitmapData{
resetMapping();
if (AUTO_MIP_MAPPING){
return (correctBitmap(_arg1));
};
this.maxU = (this.maxV = 1);
return (_arg1);
}
public function get precise():Boolean{
return (_precise);
}
public function set precise(_arg1:Boolean):void{
_precise = _arg1;
}
override public function copy(_arg1:MaterialObject3D):void{
super.copy(_arg1);
this.maxU = _arg1.maxU;
this.maxV = _arg1.maxV;
}
override public function destroy():void{
super.destroy();
if (uvMatrices){
uvMatrices = null;
};
if (bitmap){
bitmap.dispose();
};
}
override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
if (!_precise){
if (lineAlpha){
_arg2.lineStyle(lineThickness, lineColor, lineAlpha);
};
if (bitmap){
_triMap = (_arg5) ? _arg5 : ((uvMatrices[_arg1]) || (transformUV(_arg1)));
_local6 = _arg1.v0.vertex3DInstance.x;
_local7 = _arg1.v0.vertex3DInstance.y;
_local8 = _arg1.v1.vertex3DInstance.x;
_local9 = _arg1.v1.vertex3DInstance.y;
_local10 = _arg1.v2.vertex3DInstance.x;
_local11 = _arg1.v2.vertex3DInstance.y;
_triMatrix.a = (_local8 - _local6);
_triMatrix.b = (_local9 - _local7);
_triMatrix.c = (_local10 - _local6);
_triMatrix.d = (_local11 - _local7);
_triMatrix.tx = _local6;
_triMatrix.ty = _local7;
_localMatrix.a = _triMap.a;
_localMatrix.b = _triMap.b;
_localMatrix.c = _triMap.c;
_localMatrix.d = _triMap.d;
_localMatrix.tx = _triMap.tx;
_localMatrix.ty = _triMap.ty;
_localMatrix.concat(_triMatrix);
_arg2.beginBitmapFill((_arg4) ? _arg4 : bitmap, _localMatrix, tiled, smooth);
};
_arg2.moveTo(_local6, _local7);
_arg2.lineTo(_local8, _local9);
_arg2.lineTo(_local10, _local11);
_arg2.lineTo(_local6, _local7);
if (bitmap){
_arg2.endFill();
};
if (lineAlpha){
_arg2.lineStyle();
};
_arg3.renderStatistics.triangles++;
} else {
_triMap = (_arg5) ? _arg5 : ((uvMatrices[_arg1]) || (transformUV(_arg1)));
focus = _arg3.camera.focus;
renderRec(_arg2, _triMap.a, _triMap.b, _triMap.c, _triMap.d, _triMap.tx, _triMap.ty, _arg1.v0.vertex3DInstance.x, _arg1.v0.vertex3DInstance.y, _arg1.v0.vertex3DInstance.z, _arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y, _arg1.v1.vertex3DInstance.z, _arg1.v2.vertex3DInstance.x, _arg1.v2.vertex3DInstance.y, _arg1.v2.vertex3DInstance.z, 0, _arg3, (_arg4) ? _arg4 : bitmap);
};
}
override public function clone():MaterialObject3D{
var _local1:MaterialObject3D;
_local1 = super.clone();
_local1.maxU = this.maxU;
_local1.maxV = this.maxV;
return (_local1);
}
}
}//package org.papervision3d.materials
Section 89
//ColorMaterial (org.papervision3d.materials.ColorMaterial)
package org.papervision3d.materials {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.core.render.draw.*;
import org.papervision3d.core.material.*;
public class ColorMaterial extends TriangleMaterial implements ITriangleDrawer {
public function ColorMaterial(_arg1:Number=0xFF00FF, _arg2:Number=1, _arg3:Boolean=false){
this.fillColor = _arg1;
this.fillAlpha = _arg2;
this.interactive = _arg3;
}
override public function toString():String{
return (((("ColorMaterial - color:" + this.fillColor) + " alpha:") + this.fillAlpha));
}
override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_local6 = _arg1.v0.vertex3DInstance.x;
_local7 = _arg1.v0.vertex3DInstance.y;
_local8 = _arg1.v1.vertex3DInstance.x;
_local9 = _arg1.v1.vertex3DInstance.y;
_local10 = _arg1.v2.vertex3DInstance.x;
_local11 = _arg1.v2.vertex3DInstance.y;
_arg2.beginFill(fillColor, fillAlpha);
_arg2.moveTo(_local6, _local7);
_arg2.lineTo(_local8, _local9);
_arg2.lineTo(_local10, _local11);
_arg2.lineTo(_local6, _local7);
_arg2.endFill();
_arg3.renderStatistics.triangles++;
}
}
}//package org.papervision3d.materials
Section 90
//MovieMaterial (org.papervision3d.materials.MovieMaterial)
package org.papervision3d.materials {
import org.papervision3d.core.render.data.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.core.render.material.*;
import org.papervision3d.core.render.draw.*;
import org.papervision3d.*;
public class MovieMaterial extends BitmapMaterial implements ITriangleDrawer, IUpdateBeforeMaterial {
private var _animated:Boolean;
public var movieTransparent:Boolean;
public var allowAutoResize:Boolean;// = true
public var movie:DisplayObject;
public function MovieMaterial(_arg1:DisplayObject=null, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Boolean=false){
allowAutoResize = true;
super();
movieTransparent = _arg2;
this.animated = _arg3;
this.interactive = interactive;
this.precise = _arg4;
if (_arg1){
texture = _arg1;
};
}
public function updateBeforeRender(_arg1:RenderSessionData):void{
var _local2:int;
var _local3:int;
if (_animated){
_local2 = int(movie.width);
_local3 = int(movie.height);
if (((allowAutoResize) && (((!((_local2 == bitmap.width))) || (!((_local3 == bitmap.height))))))){
initBitmap(movie);
};
drawBitmap();
};
}
public function drawBitmap():void{
var _local1:Matrix;
bitmap.fillRect(bitmap.rect, this.fillColor);
_local1 = new Matrix();
_local1.scale(movie.scaleX, movie.scaleY);
bitmap.draw(movie, _local1, movie.transform.colorTransform);
}
public function get animated():Boolean{
return (_animated);
}
public function set animated(_arg1:Boolean):void{
_animated = _arg1;
}
override public function set texture(_arg1:Object):void{
if ((_arg1 is DisplayObject) == false){
Papervision3D.log("Error: MovieMaterial.texture requires a Sprite to be passed as the object");
return;
};
bitmap = createBitmapFromSprite(DisplayObject(_arg1));
_texture = _arg1;
}
protected function createBitmapFromSprite(_arg1:DisplayObject):BitmapData{
movie = _arg1;
initBitmap(movie);
drawBitmap();
bitmap = super.createBitmap(bitmap);
return (bitmap);
}
override public function get texture():Object{
return (this._texture);
}
protected function initBitmap(_arg1:DisplayObject):void{
if (bitmap){
bitmap.dispose();
};
bitmap = new BitmapData(_arg1.width, _arg1.height, this.movieTransparent);
}
}
}//package org.papervision3d.materials
Section 91
//WireframeMaterial (org.papervision3d.materials.WireframeMaterial)
package org.papervision3d.materials {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.geom.renderables.*;
import flash.display.*;
import flash.geom.*;
import org.papervision3d.core.render.draw.*;
import org.papervision3d.core.material.*;
public class WireframeMaterial extends TriangleMaterial implements ITriangleDrawer {
public function WireframeMaterial(_arg1:Number=0xFF00FF, _arg2:Number=100, _arg3:Number=0){
this.lineColor = _arg1;
this.lineAlpha = _arg2;
this.lineThickness = _arg3;
this.doubleSided = false;
}
override public function toString():String{
return (((("WireframeMaterial - color:" + this.lineColor) + " alpha:") + this.lineAlpha));
}
override public function drawTriangle(_arg1:Triangle3D, _arg2:Graphics, _arg3:RenderSessionData, _arg4:BitmapData=null, _arg5:Matrix=null):void{
var _local6:Number;
var _local7:Number;
_local6 = _arg1.v0.vertex3DInstance.x;
_local7 = _arg1.v0.vertex3DInstance.y;
if (lineAlpha){
_arg2.lineStyle(lineThickness, lineColor, lineAlpha);
_arg2.moveTo(_local6, _local7);
_arg2.lineTo(_arg1.v1.vertex3DInstance.x, _arg1.v1.vertex3DInstance.y);
_arg2.lineTo(_arg1.v2.vertex3DInstance.x, _arg1.v2.vertex3DInstance.y);
_arg2.lineTo(_local6, _local7);
_arg2.lineStyle();
_arg3.renderStatistics.triangles++;
};
}
}
}//package org.papervision3d.materials
Section 92
//Sphere (org.papervision3d.objects.primitives.Sphere)
package org.papervision3d.objects.primitives {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class Sphere extends TriangleMesh3D {
private var segmentsH:Number;
private var segmentsW:Number;
public static var MIN_SEGMENTSW:Number = 3;
public static var DEFAULT_SCALE:Number = 1;
public static var DEFAULT_RADIUS:Number = 100;
public static var DEFAULT_SEGMENTSH:Number = 6;
public static var MIN_SEGMENTSH:Number = 2;
public static var DEFAULT_SEGMENTSW:Number = 8;
public function Sphere(_arg1:MaterialObject3D=null, _arg2:Number=100, _arg3:int=8, _arg4:int=6, _arg5:Object=null){
var _local6:Number;
super(_arg1, new Array(), new Array(), null, _arg5);
this.segmentsW = Math.max(MIN_SEGMENTSW, ((_arg3) || (DEFAULT_SEGMENTSW)));
this.segmentsH = Math.max(MIN_SEGMENTSH, ((_arg4) || (DEFAULT_SEGMENTSH)));
if (_arg2 == 0){
_arg2 = DEFAULT_RADIUS;
};
_local6 = DEFAULT_SCALE;
buildSphere(_arg2);
}
private function buildSphere(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Array;
var _local8:Array;
var _local9:Array;
var _local10:int;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Array;
var _local15:Vertex3D;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:int;
var _local20:Boolean;
var _local21:Vertex3D;
var _local22:Vertex3D;
var _local23:Vertex3D;
var _local24:Vertex3D;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:NumberUV;
var _local30:NumberUV;
var _local31:NumberUV;
var _local32:NumberUV;
_local5 = Math.max(3, this.segmentsW);
_local6 = Math.max(2, this.segmentsH);
_local7 = this.geometry.vertices;
_local8 = this.geometry.faces;
_local9 = new Array();
_local3 = 0;
while (_local3 < (_local6 + 1)) {
_local11 = Number((_local3 / _local6));
_local12 = (-(_arg1) * Math.cos((_local11 * Math.PI)));
_local13 = (_arg1 * Math.sin((_local11 * Math.PI)));
_local14 = new Array();
_local2 = 0;
while (_local2 < _local5) {
_local16 = Number(((2 * _local2) / _local5));
_local17 = (_local13 * Math.sin((_local16 * Math.PI)));
_local18 = (_local13 * Math.cos((_local16 * Math.PI)));
if (!(((((_local3 == 0)) || ((_local3 == _local6)))) && ((_local2 > 0)))){
_local15 = new Vertex3D(_local18, _local12, _local17);
_local7.push(_local15);
};
_local14.push(_local15);
_local2++;
};
_local9.push(_local14);
_local3++;
};
_local10 = _local9.length;
_local3 = 0;
while (_local3 < _local10) {
_local19 = _local9[_local3].length;
if (_local3 > 0){
_local2 = 0;
while (_local2 < _local19) {
_local20 = (_local2 == (_local19 - 0));
_local21 = _local9[_local3][(_local20) ? 0 : _local2];
_local22 = _local9[_local3][(((_local2 == 0)) ? _local19 : _local2 - 1)];
_local23 = _local9[(_local3 - 1)][(((_local2 == 0)) ? _local19 : _local2 - 1)];
_local24 = _local9[(_local3 - 1)][(_local20) ? 0 : _local2];
_local25 = (_local3 / (_local10 - 1));
_local26 = ((_local3 - 1) / (_local10 - 1));
_local27 = ((_local2 + 1) / _local19);
_local28 = (_local2 / _local19);
_local29 = new NumberUV(_local27, _local26);
_local30 = new NumberUV(_local27, _local25);
_local31 = new NumberUV(_local28, _local25);
_local32 = new NumberUV(_local28, _local26);
if (_local3 < (_local9.length - 1)){
_local8.push(new Triangle3D(this, new Array(_local21, _local22, _local23), material, new Array(_local30, _local31, _local32)));
};
if (_local3 > 1){
_local8.push(new Triangle3D(this, new Array(_local21, _local23, _local24), material, new Array(_local30, _local32, _local29)));
};
_local2++;
};
};
_local3++;
};
this.geometry.ready = true;
}
}
}//package org.papervision3d.objects.primitives
Section 93
//DisplayObject3D (org.papervision3d.objects.DisplayObject3D)
package org.papervision3d.objects {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.core.math.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.core.data.*;
import org.papervision3d.view.layer.*;
import org.papervision3d.core.culling.*;
import org.papervision3d.*;
import org.papervision3d.core.ns.*;
public class DisplayObject3D extends DisplayObjectContainer3D {
public var extra:Object;
public var frustumTestMethod:int;// = 0
private var _rotationX:Number;
private var _rotationY:Number;
private var _rotationZ:Number;
private var position:Number3D;
public var meshSort:uint;// = 1
public var materials:MaterialsList;
public var id:int;
private var xAxis:Number3D;
private var zAxis:Number3D;
private var _scaleDirty:Boolean;// = false
private var _numClones:uint;// = 0
private var _scaleX:Number;
private var _scaleY:Number;
private var _scaleZ:Number;
public var screen:Number3D;
protected var _userData:UserData;
public var screenZ:Number;
protected var _useOwnContainer:Boolean;
public var transform:Matrix3D;
protected var _containerSortMode:int;
public var name:String;
private var target:Number3D;
public var world:Matrix3D;
private var _material:MaterialObject3D;
public var culled:Boolean;
public var visible:Boolean;
public var parent:DisplayObjectContainer3D;
public var geometry:GeometryObject3D;
public var view:Matrix3D;
protected var _scene:SceneObject3D;// = null
protected var _containerBlendMode:int;
public var faces:Array;
private var yAxis:Number3D;
protected var _filters:Array;
private var _rotation:Number3D;
protected var _sorted:Array;
protected var _transformDirty:Boolean;// = false
private var _rotationDirty:Boolean;// = false
public static const MESH_SORT_CLOSE:uint = 3;
public static const MESH_SORT_CENTER:uint = 1;
public static const MESH_SORT_FAR:uint = 2;
private static var entry_count:uint = 0;
private static var LEFT:Number3D = new Number3D(-1, 0, 0);
private static var _totalDisplayObjects:int = 0;
private static var _tempMatrix:Matrix3D = Matrix3D.IDENTITY;
public static var sortedArray:Array = new Array();
private static var BACKWARD:Number3D = new Number3D(0, 0, -1);
private static var FORWARD:Number3D = new Number3D(0, 0, 1);
private static var DOWN:Number3D = new Number3D(0, -1, 0);
private static var _tempQuat:Quaternion = new Quaternion();
private static var toDEGREES:Number = 57.2957795130823;
public static var faceLevelMode:Boolean;
private static var UP:Number3D = new Number3D(0, 1, 0);
private static var toRADIANS:Number = 0.0174532925199433;
private static var RIGHT:Number3D = new Number3D(1, 0, 0);
public function DisplayObject3D(_arg1:String=null, _arg2:GeometryObject3D=null, _arg3:Object=null):void{
var _local4:Number;
_transformDirty = false;
position = Number3D.ZERO;
target = Number3D.ZERO;
zAxis = Number3D.ZERO;
xAxis = Number3D.ZERO;
yAxis = Number3D.ZERO;
_rotation = Number3D.ZERO;
_rotationDirty = false;
_scaleDirty = false;
_numClones = 0;
frustumTestMethod = FrustumTestMethod.BOUNDING_SPHERE;
screen = new Number3D();
_scene = null;
meshSort = MESH_SORT_CENTER;
faces = new Array();
super();
if (_arg1 != null){
Papervision3D.log(("DisplayObject3D: " + _arg1));
};
this.culled = false;
this.transform = Matrix3D.IDENTITY;
this.world = Matrix3D.IDENTITY;
this.view = Matrix3D.IDENTITY;
if (_arg3 != null){
this.x = (_arg3.x) ? ((_arg3.x) || (0)) : 0;
this.y = (_arg3.y) ? ((_arg3.y) || (0)) : 0;
this.z = (_arg3.z) ? ((_arg3.z) || (0)) : 0;
};
rotationX = (_arg3) ? ((_arg3.rotationX) || (0)) : 0;
rotationY = (_arg3) ? ((_arg3.rotationY) || (0)) : 0;
rotationZ = (_arg3) ? ((_arg3.rotationZ) || (0)) : 0;
_local4 = (Papervision3D.usePERCENT) ? 100 : 1;
scaleX = (_arg3) ? ((_arg3.scaleX) || (_local4)) : _local4;
scaleY = (_arg3) ? ((_arg3.scaleY) || (_local4)) : _local4;
scaleZ = (_arg3) ? ((_arg3.scaleZ) || (_local4)) : _local4;
if (((_arg3) && (_arg3.extra))){
this.extra = _arg3.extra;
};
this.visible = true;
this.id = _totalDisplayObjects++;
this.name = ((_arg1) || (String(this.id)));
_numClones = 0;
if (_arg2){
addGeometry(_arg2);
};
}
public function get containerSortMode():int{
return (_containerSortMode);
}
public function set z(_arg1:Number):void{
this.transform.n34 = _arg1;
}
public function set containerSortMode(_arg1:int):void{
_containerSortMode = _arg1;
}
public function get filters():Array{
return (_filters);
}
public function moveDown(_arg1:Number):void{
translate(_arg1, DOWN);
}
public function set scene(_arg1:SceneObject3D):void{
var _local2:DisplayObject3D;
_scene = _arg1;
for each (_local2 in this._childrenByName) {
if (_local2.scene == null){
_local2.scene = _scene;
};
};
}
public function project(_arg1:DisplayObject3D, _arg2:RenderSessionData):Number{
var _local3:Number;
var _local4:Number;
var _local5:DisplayObject3D;
if (this._transformDirty){
updateTransform();
};
this.world.calculateMultiply(_arg1.world, this.transform);
if ((_arg2.camera is IObjectCuller)){
if (this === _arg2.camera){
this.culled = true;
} else {
this.culled = (IObjectCuller(_arg2.camera).testObject(this) < 0);
};
if (this.culled){
_arg2.renderStatistics.culledObjects++;
return (0);
};
if (_arg1 !== _arg2.camera){
this.view.calculateMultiply4x4(_arg1.view, this.transform);
};
} else {
if (_arg1 !== _arg2.camera){
this.view.calculateMultiply(_arg1.view, this.transform);
};
};
_local3 = 0;
_local4 = 0;
if (_useOwnContainer){
};
for each (_local5 in this._childrenByName) {
if (_local5.visible){
_local3 = (_local3 + _local5.project(this, _arg2));
_local4++;
};
};
return ((this.screenZ = (_local3 / _local4)));
}
public function set containerBlendMode(_arg1:int):void{
_containerBlendMode = _arg1;
}
public function get material():MaterialObject3D{
return (_material);
}
pv3dview function setLayerForViewport(_arg1:ViewportLayer):void{
}
private function calculateScreenCoords(_arg1:CameraObject3D):void{
var _local2:Number;
_local2 = ((_arg1.focus * _arg1.zoom) / (_arg1.focus + view.n34));
screen.x = (view.n14 * _local2);
screen.y = (view.n24 * _local2);
screen.z = view.n34;
}
public function lookAt(_arg1:DisplayObject3D, _arg2:Number3D=null):void{
var _local3:Matrix3D;
position.reset(this.x, this.y, this.z);
target.reset(_arg1.x, _arg1.y, _arg1.z);
zAxis.copyFrom(target);
zAxis.minusEq(position);
zAxis.normalize();
if (zAxis.modulo > 0.1){
xAxis = Number3D.cross(zAxis, ((_arg2) || (UP)), xAxis);
xAxis.normalize();
yAxis = Number3D.cross(zAxis, xAxis, yAxis);
yAxis.normalize();
_local3 = this.transform;
_local3.n11 = (xAxis.x * _scaleX);
_local3.n21 = (xAxis.y * _scaleX);
_local3.n31 = (xAxis.z * _scaleX);
_local3.n12 = (-(yAxis.x) * _scaleY);
_local3.n22 = (-(yAxis.y) * _scaleY);
_local3.n32 = (-(yAxis.z) * _scaleY);
_local3.n13 = (zAxis.x * _scaleZ);
_local3.n23 = (zAxis.y * _scaleZ);
_local3.n33 = (zAxis.z * _scaleZ);
this._transformDirty = false;
this._rotationDirty = true;
} else {
trace("lookAt error");
};
}
public function set rotationX(_arg1:Number):void{
this._rotationX = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1);
this._transformDirty = true;
}
public function get containerBlendMode():int{
return (_containerBlendMode);
}
public function get userData():UserData{
return (_userData);
}
public function set rotationZ(_arg1:Number):void{
this._rotationZ = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1);
this._transformDirty = true;
}
public function set rotationY(_arg1:Number):void{
this._rotationY = (Papervision3D.useDEGREES) ? (-(_arg1) * toRADIANS) : -(_arg1);
this._transformDirty = true;
}
public function addGeometry(_arg1:GeometryObject3D=null):void{
if (_arg1){
this.geometry = _arg1;
};
}
public function get sceneX():Number{
return (this.world.n14);
}
public function get sceneY():Number{
return (this.world.n24);
}
public function get scaleY():Number{
if (Papervision3D.usePERCENT){
return ((this._scaleY * 100));
};
return (this._scaleY);
}
public function get scaleZ():Number{
if (Papervision3D.usePERCENT){
return ((this._scaleZ * 100));
};
return (this._scaleZ);
}
public function moveUp(_arg1:Number):void{
translate(_arg1, UP);
}
public function get scaleX():Number{
if (Papervision3D.usePERCENT){
return ((this._scaleX * 100));
};
return (this._scaleX);
}
public function distanceTo(_arg1:DisplayObject3D):Number{
var _local2:Number;
var _local3:Number;
var _local4:Number;
_local2 = (this.x - _arg1.x);
_local3 = (this.y - _arg1.y);
_local4 = (this.z - _arg1.z);
return (Math.sqrt((((_local2 * _local2) + (_local3 * _local3)) + (_local4 * _local4))));
}
public function get scale():Number{
if ((((this._scaleX == this._scaleY)) && ((this._scaleX == this._scaleZ)))){
if (Papervision3D.usePERCENT){
return ((this._scaleX * 100));
};
return (this._scaleX);
//unresolved jump
};
return (NaN);
}
public function set userData(_arg1:UserData):void{
_userData = _arg1;
}
public function get sceneZ():Number{
return (this.world.n34);
}
private function updateRotation():void{
_rotation = Matrix3D.matrix2euler(this.transform, _rotation);
this._rotationX = (_rotation.x * toRADIANS);
this._rotationY = (_rotation.y * toRADIANS);
this._rotationZ = (_rotation.z * toRADIANS);
this._rotationDirty = false;
}
public function hitTestObject(_arg1:DisplayObject3D, _arg2:Number=1):Boolean{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local3 = (this.x - _arg1.x);
_local4 = (this.y - _arg1.y);
_local5 = (this.z - _arg1.z);
_local6 = (((_local3 * _local3) + (_local4 * _local4)) + (_local5 * _local5));
_local7 = (this.geometry) ? this.geometry.boundingSphere.maxDistance : 0;
_local8 = (_arg1.geometry) ? _arg1.geometry.boundingSphere.maxDistance : 0;
_local7 = (_local7 * _arg2);
return (((_local7 + _local8) > _local6));
}
override public function toString():String{
return (((((((this.name + ": x:") + Math.round(this.x)) + " y:") + Math.round(this.y)) + " z:") + Math.round(this.z)));
}
public function set material(_arg1:MaterialObject3D):void{
if (_material){
_material.unregisterObject(this);
};
_material = _arg1;
_material.registerObject(this);
}
public function copyTransform(_arg1):void{
var _local2:Matrix3D;
var _local3:Matrix3D;
_local2 = this.transform;
_local3 = ((_arg1 is DisplayObject3D)) ? _arg1.transform : _arg1;
_local2.n11 = _local3.n11;
_local2.n12 = _local3.n12;
_local2.n13 = _local3.n13;
_local2.n14 = _local3.n14;
_local2.n21 = _local3.n21;
_local2.n22 = _local3.n22;
_local2.n23 = _local3.n23;
_local2.n24 = _local3.n24;
_local2.n31 = _local3.n31;
_local2.n32 = _local3.n32;
_local2.n33 = _local3.n33;
_local2.n34 = _local3.n34;
this._transformDirty = false;
this._rotationDirty = true;
}
public function get y():Number{
return (this.transform.n24);
}
public function get z():Number{
return (this.transform.n34);
}
public function roll(_arg1:Number):void{
var _local2:Number3D;
_arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1;
_local2 = FORWARD.clone();
if (this._transformDirty){
updateTransform();
};
Matrix3D.rotateAxis(transform, _local2);
_tempMatrix = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1, _tempMatrix);
this.transform.calculateMultiply3x3(_tempMatrix, transform);
this._rotationDirty = true;
}
public function yaw(_arg1:Number):void{
var _local2:Number3D;
_arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1;
_local2 = UP.clone();
if (this._transformDirty){
updateTransform();
};
Matrix3D.rotateAxis(transform, _local2);
_tempMatrix = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1, _tempMatrix);
this.transform.calculateMultiply3x3(_tempMatrix, transform);
this._rotationDirty = true;
}
public function get x():Number{
return (this.transform.n14);
}
public function moveLeft(_arg1:Number):void{
translate(_arg1, LEFT);
}
public function get scene():SceneObject3D{
return (_scene);
}
public function set useOwnContainer(_arg1:Boolean):void{
_useOwnContainer = _arg1;
}
public function set scale(_arg1:Number):void{
if (Papervision3D.usePERCENT){
_arg1 = (_arg1 / 100);
};
this._scaleX = (this._scaleY = (this._scaleZ = _arg1));
this._transformDirty = true;
}
public function clone():DisplayObject3D{
var _local1:String;
var _local2:DisplayObject3D;
var _local3:DisplayObject3D;
_local1 = ((this.name + "_") + _numClones++);
_local2 = new DisplayObject3D(_local1);
if (this.material){
_local2.material = this.material;
};
if (this.materials){
_local2.materials = this.materials.clone();
};
if (this.geometry){
_local2.geometry = this.geometry.clone(_local2);
_local2.geometry.ready = true;
};
_local2.copyTransform(this.transform);
for each (_local3 in this.children) {
_local2.addChild(_local3.clone());
};
return (_local2);
}
public function getMaterialByName(_arg1:String):MaterialObject3D{
var _local2:MaterialObject3D;
var _local3:DisplayObject3D;
_local2 = this.materials.getMaterialByName(_arg1);
if (_local2){
return (_local2);
};
for each (_local3 in this._childrenByName) {
_local2 = _local3.getMaterialByName(_arg1);
if (_local2){
return (_local2);
};
};
return (null);
}
public function get rotationY():Number{
if (this._rotationDirty){
updateRotation();
};
return ((Papervision3D.useDEGREES) ? (-(this._rotationY) * toDEGREES) : -(this._rotationY));
}
public function get rotationZ():Number{
if (this._rotationDirty){
updateRotation();
};
return ((Papervision3D.useDEGREES) ? (-(this._rotationZ) * toDEGREES) : -(this._rotationZ));
}
public function set scaleY(_arg1:Number):void{
if (Papervision3D.usePERCENT){
this._scaleY = (_arg1 / 100);
} else {
this._scaleY = _arg1;
};
this._transformDirty = true;
}
public function set scaleZ(_arg1:Number):void{
if (Papervision3D.usePERCENT){
this._scaleZ = (_arg1 / 100);
} else {
this._scaleZ = _arg1;
};
this._transformDirty = true;
}
public function get rotationX():Number{
if (this._rotationDirty){
updateRotation();
};
return ((Papervision3D.useDEGREES) ? (-(this._rotationX) * toDEGREES) : -(this._rotationX));
}
public function translate(_arg1:Number, _arg2:Number3D):void{
var _local3:Number3D;
_local3 = _arg2.clone();
if (this._transformDirty){
updateTransform();
};
Matrix3D.rotateAxis(transform, _local3);
this.x = (this.x + (_arg1 * _local3.x));
this.y = (this.y + (_arg1 * _local3.y));
this.z = (this.z + (_arg1 * _local3.z));
}
public function set scaleX(_arg1:Number):void{
if (Papervision3D.usePERCENT){
this._scaleX = (_arg1 / 100);
} else {
this._scaleX = _arg1;
};
this._transformDirty = true;
}
public function pitch(_arg1:Number):void{
var _local2:Number3D;
_arg1 = (Papervision3D.useDEGREES) ? (_arg1 * toRADIANS) : _arg1;
_local2 = RIGHT.clone();
if (this._transformDirty){
updateTransform();
};
Matrix3D.rotateAxis(transform, _local2);
_tempMatrix = Matrix3D.rotationMatrix(_local2.x, _local2.y, _local2.z, _arg1, _tempMatrix);
this.transform.calculateMultiply3x3(_tempMatrix, transform);
this._rotationDirty = true;
}
public function moveForward(_arg1:Number):void{
translate(_arg1, FORWARD);
}
protected function updateTransform():void{
var _local1:Matrix3D;
_tempQuat = Matrix3D.euler2quaternion(-(this._rotationY), -(this._rotationZ), this._rotationX, _tempQuat);
_tempMatrix = Matrix3D.quaternion2matrix(_tempQuat.x, _tempQuat.y, _tempQuat.z, _tempQuat.w, _tempMatrix);
_local1 = this.transform;
_tempMatrix.n14 = _local1.n14;
_tempMatrix.n24 = _local1.n24;
_tempMatrix.n34 = _local1.n34;
_local1.copy(_tempMatrix);
_tempMatrix.reset();
_tempMatrix.n11 = this._scaleX;
_tempMatrix.n22 = this._scaleY;
_tempMatrix.n33 = this._scaleZ;
this.transform.calculateMultiply(_local1, _tempMatrix);
this._transformDirty = false;
}
public function copyPosition(_arg1):void{
var _local2:Matrix3D;
var _local3:Matrix3D;
_local2 = this.transform;
_local3 = ((_arg1 is DisplayObject3D)) ? _arg1.transform : _arg1;
_local2.n14 = _local3.n14;
_local2.n24 = _local3.n24;
_local2.n34 = _local3.n34;
}
public function get useOwnContainer():Boolean{
return (_useOwnContainer);
}
public function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local4 = (this.x - _arg1);
_local5 = (this.y - _arg2);
_local6 = (this.z - _arg3);
_local7 = (((_local4 * _local4) + (_local5 * _local5)) + (_local6 * _local6));
_local8 = (this.geometry) ? this.geometry.boundingSphere.maxDistance : 0;
return ((_local8 > _local7));
}
public function moveRight(_arg1:Number):void{
translate(_arg1, RIGHT);
}
public function moveBackward(_arg1:Number):void{
translate(_arg1, BACKWARD);
}
public function set x(_arg1:Number):void{
this.transform.n14 = _arg1;
}
public function materialsList():String{
var _local1:String;
var _local2:String;
var _local3:DisplayObject3D;
_local1 = "";
for (_local2 in this.materials) {
_local1 = (_local1 + (_local2 + "\n"));
};
for each (_local3 in this._childrenByName) {
for (_local2 in _local3.materials.materialsByName) {
_local1 = (_local1 + (("+ " + _local2) + "\n"));
};
};
return (_local1);
}
public function set y(_arg1:Number):void{
this.transform.n24 = _arg1;
}
public function set filters(_arg1:Array):void{
_filters = _arg1;
}
override public function addChild(_arg1:DisplayObject3D, _arg2:String=null):DisplayObject3D{
_arg1 = super.addChild(_arg1, _arg2);
if (_arg1.scene == null){
_arg1.scene = scene;
};
return (_arg1);
}
public static function get ZERO():DisplayObject3D{
return (new (DisplayObject3D));
}
}
}//package org.papervision3d.objects
Section 94
//BasicRenderEngine (org.papervision3d.render.BasicRenderEngine)
package org.papervision3d.render {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.proto.*;
import org.papervision3d.view.*;
import org.papervision3d.core.render.command.*;
import flash.geom.*;
import org.papervision3d.core.render.material.*;
import org.papervision3d.events.*;
import org.papervision3d.core.render.*;
import org.papervision3d.core.render.sort.*;
import org.papervision3d.core.render.filter.*;
import org.papervision3d.core.render.project.*;
import org.papervision3d.core.utils.*;
public class BasicRenderEngine extends AbstractRenderEngine implements IRenderEngine {
public var sorter:IRenderSorter;
public var projectionPipeline:ProjectionPipeline;
protected var renderStatistics:RenderStatistics;
protected var renderList:Array;
protected var renderSessionData:RenderSessionData;
protected var stopWatch:StopWatch;
public var filter:IRenderFilter;
protected var cleanRHD:RenderHitData;
public function BasicRenderEngine():void{
cleanRHD = new RenderHitData();
super();
init();
}
override public function removeFromRenderList(_arg1:IRenderListItem):int{
return (renderList.splice(renderList.indexOf(_arg1), 1));
}
protected function doRender(_arg1:RenderSessionData):RenderStatistics{
var _local2:IRenderListItem;
stopWatch.reset();
stopWatch.start();
MaterialManager.getInstance().updateMaterialsBeforeRender(_arg1);
filter.filter(renderList);
sorter.sort(renderList);
while ((_local2 = renderList.pop())) {
_local2.render(_arg1);
_arg1.viewPort.lastRenderList.push(_local2);
};
MaterialManager.getInstance().updateMaterialsAfterRender(_arg1);
_arg1.renderStatistics.renderTime = stopWatch.stop();
_arg1.viewPort.updateAfterRender();
return (renderStatistics);
}
protected function init():void{
renderStatistics = new RenderStatistics();
projectionPipeline = new BasicProjectionPipeline();
stopWatch = new StopWatch();
sorter = new BasicRenderSorter();
filter = new BasicRenderFilter();
renderList = new Array();
renderSessionData = new RenderSessionData();
renderSessionData.renderer = this;
}
override public function renderScene(_arg1:SceneObject3D, _arg2:CameraObject3D, _arg3:Viewport3D, _arg4:Boolean=true):RenderStatistics{
_arg3.updateBeforeRender();
_arg3.lastRenderer = this;
renderSessionData.scene = _arg1;
renderSessionData.camera = _arg2;
renderSessionData.viewPort = _arg3;
renderSessionData.container = _arg3.containerSprite;
renderSessionData.triangleCuller = _arg3.triangleCuller;
renderSessionData.particleCuller = _arg3.particleCuller;
renderSessionData.renderStatistics.clear();
projectionPipeline.project(renderSessionData);
doRender(renderSessionData);
dispatchEvent(new RendererEvent(RendererEvent.RENDER_DONE, renderSessionData));
return (renderSessionData.renderStatistics);
}
public function hitTestPoint2D(_arg1:Point, _arg2:Viewport3D):RenderHitData{
return (_arg2.hitTestPoint2D(_arg1));
}
override public function addToRenderList(_arg1:IRenderListItem):int{
return (renderList.push(_arg1));
}
}
}//package org.papervision3d.render
Section 95
//Scene3D (org.papervision3d.scenes.Scene3D)
package org.papervision3d.scenes {
import org.papervision3d.core.proto.*;
public class Scene3D extends SceneObject3D {
}
}//package org.papervision3d.scenes
Section 96
//ViewportBaseLayer (org.papervision3d.view.layer.ViewportBaseLayer)
package org.papervision3d.view.layer {
import org.papervision3d.view.*;
public class ViewportBaseLayer extends ViewportLayer {
public function ViewportBaseLayer(_arg1:Viewport3D){
super(_arg1, null);
}
}
}//package org.papervision3d.view.layer
Section 97
//ViewportLayer (org.papervision3d.view.layer.ViewportLayer)
package org.papervision3d.view.layer {
import org.papervision3d.view.*;
import flash.display.*;
import org.papervision3d.objects.*;
import org.papervision3d.core.ns.*;
public class ViewportLayer extends Sprite {
private var childLayers:Array;
protected var _displayObject3D:DisplayObject3D;
protected var viewport:Viewport3D;
public function ViewportLayer(_arg1:Viewport3D, _arg2:DisplayObject3D){
this.viewport = _arg1;
this.displayObject3D = _arg2;
init();
}
private function init():void{
childLayers = new Array();
}
pv3dview function getChildLayerFor(_arg1:DisplayObject3D):ViewportLayer{
var _local2:ViewportLayer;
if (_arg1){
_local2 = new ViewportLayer(viewport, _arg1);
addChild(_local2);
return (_local2);
};
trace("Needs to be a do3d");
return (null);
}
pv3dview function clear():void{
var _local1:ViewportLayer;
for each (_local1 in childLayers) {
_local1.clear();
removeChild(_local1);
};
graphics.clear();
}
public function set displayObject3D(_arg1:DisplayObject3D):void{
_displayObject3D = _arg1;
}
public function get displayObject3D():DisplayObject3D{
return (_displayObject3D);
}
}
}//package org.papervision3d.view.layer
Section 98
//Viewport3D (org.papervision3d.view.Viewport3D)
package org.papervision3d.view {
import org.papervision3d.core.render.data.*;
import org.papervision3d.core.render.command.*;
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import org.papervision3d.view.layer.*;
import org.papervision3d.events.*;
import org.papervision3d.render.*;
import org.papervision3d.core.culling.*;
import org.papervision3d.core.view.*;
import org.papervision3d.core.render.*;
import org.papervision3d.core.utils.*;
public class Viewport3D extends Sprite implements IViewport3D {
protected var _interactive:Boolean;
public var cullingRectangle:Rectangle;
protected var _viewportObjectFilter:ViewportObjectFilter;
protected var _hWidth:Number;
protected var _autoScaleToStage:Boolean;
protected var _lastRenderer:IRenderEngine;
public var sizeRectangle:Rectangle;
protected var _hHeight:Number;
protected var _containerSprite:ViewportBaseLayer;
protected var _autoClipping:Boolean;
protected var _height:Number;
public var interactiveSceneManager:InteractiveSceneManager;
public var lastRenderList:Array;
protected var _autoCulling:Boolean;
public var particleCuller:IParticleCuller;
protected var _width:Number;
public var triangleCuller:ITriangleCuller;
public function Viewport3D(_arg1:Number=640, _arg2:Number=480, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Boolean=true, _arg6:Boolean=true){
this.interactive = _arg4;
init();
this.viewportWidth = _arg1;
this.viewportHeight = _arg2;
this.autoClipping = _arg5;
this.autoCulling = _arg6;
this.autoScaleToStage = _arg3;
}
public function set autoCulling(_arg1:Boolean):void{
if (_arg1){
triangleCuller = new RectangleTriangleCuller(cullingRectangle);
particleCuller = new RectangleParticleCuller(cullingRectangle);
} else {
if (!_arg1){
triangleCuller = new DefaultTriangleCuller();
particleCuller = new DefaultParticleCuller();
};
};
_autoCulling = _arg1;
}
protected function onStageResize(_arg1:Event=null):void{
if (_autoScaleToStage){
viewportWidth = stage.stageWidth;
viewportHeight = stage.stageHeight;
};
}
public function hitTestMouse():RenderHitData{
var _local1:Point;
_local1 = new Point(containerSprite.mouseX, containerSprite.mouseY);
return (hitTestPoint2D(_local1));
}
protected function init():void{
lastRenderList = new Array();
sizeRectangle = new Rectangle();
cullingRectangle = new Rectangle();
_containerSprite = new ViewportBaseLayer(this);
addChild(_containerSprite);
if (interactive){
interactiveSceneManager = new InteractiveSceneManager(this);
};
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
}
public function set autoClipping(_arg1:Boolean):void{
if (_arg1){
scrollRect = sizeRectangle;
} else {
scrollRect = null;
};
_autoClipping = _arg1;
}
public function updateAfterRender():void{
}
public function get viewportHeight():Number{
return (_height);
}
public function hitTestPoint2D(_arg1:Point):RenderHitData{
var _local2:RenderableListItem;
var _local3:RenderHitData;
var _local4:IRenderListItem;
var _local5:uint;
if (interactive){
_local3 = new RenderHitData();
_local5 = lastRenderList.length;
while ((_local4 = lastRenderList[--_local5])) {
if ((_local4 is RenderableListItem)){
_local2 = (_local4 as RenderableListItem);
_local3 = _local2.hitTestPoint2D(_arg1, _local3);
if (_local3.hasHit){
return (_local3);
};
};
};
};
return (new RenderHitData());
}
public function get autoCulling():Boolean{
return (_autoCulling);
}
public function get viewportObjectFilter():ViewportObjectFilter{
return (_viewportObjectFilter);
}
public function updateBeforeRender():void{
lastRenderList.length = 0;
_containerSprite.clear();
}
protected function handleRenderDone(_arg1:RendererEvent):void{
interactiveSceneManager.updateRenderHitData();
}
protected function onAddedToStage(_arg1:Event):void{
stage.addEventListener(Event.RESIZE, onStageResize);
onStageResize();
}
public function set viewportWidth(_arg1:Number):void{
_width = _arg1;
_hWidth = (_arg1 / 2);
containerSprite.x = _hWidth;
cullingRectangle.x = -(_hWidth);
cullingRectangle.width = _arg1;
sizeRectangle.width = _arg1;
if (_autoClipping){
scrollRect = sizeRectangle;
};
}
public function get autoClipping():Boolean{
return (_autoClipping);
}
public function get containerSprite():ViewportLayer{
return (_containerSprite);
}
public function set viewportObjectFilter(_arg1:ViewportObjectFilter):void{
_viewportObjectFilter = _arg1;
}
public function get viewportWidth():Number{
return (_width);
}
public function set autoScaleToStage(_arg1:Boolean):void{
_autoScaleToStage = _arg1;
if (((_arg1) && (!((stage == null))))){
onStageResize();
};
}
public function set interactive(_arg1:Boolean):void{
_interactive = _arg1;
}
public function set viewportHeight(_arg1:Number):void{
_height = _arg1;
_hHeight = (_arg1 / 2);
containerSprite.y = _hHeight;
cullingRectangle.y = -(_hHeight);
cullingRectangle.height = _arg1;
sizeRectangle.height = _arg1;
if (_autoClipping){
scrollRect = sizeRectangle;
};
}
public function get autoScaleToStage():Boolean{
return (_autoScaleToStage);
}
public function get interactive():Boolean{
return (_interactive);
}
public function set lastRenderer(_arg1:BasicRenderEngine):void{
if (!interactive){
return;
};
_arg1.removeEventListener(RendererEvent.RENDER_DONE, handleRenderDone);
_arg1.addEventListener(RendererEvent.RENDER_DONE, handleRenderDone);
}
protected function onRemovedFromStage(_arg1:Event):void{
stage.removeEventListener(Event.RESIZE, onStageResize);
}
}
}//package org.papervision3d.view
Section 99
//Papervision3D (org.papervision3d.Papervision3D)
package org.papervision3d {
public class Papervision3D {
public static var useDEGREES:Boolean = true;
public static var VERBOSE:Boolean = true;
public static var AUTHOR:String = "(c) 2006-2007 Copyright by Carlos Ulloa - | John Grden | Ralph Hauwert | Tim Knip | Andy Zupko";
public static var DATE:String = "24.03.08";
public static var NAME:String = "Papervision3D";
public static var VERSION:String = "Public Alpha 2.0 - Great White";
public static var usePERCENT:Boolean = false;
public static function log(_arg1:String):void{
if (Papervision3D.VERBOSE){
trace(_arg1);
};
}
}
}//package org.papervision3d
Section 100
//black (black)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class black extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function black(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(0.340393, 0.951679, 3.483663);
v(0.950101, -0.651271, 1.014491);
v(1.056463, -0.468207, 1.078831);
v(1.084342, -0.800503, 0.922188);
v(1.025527, -0.779726, 0.925886);
v(0.956473, -0.637619, 0.986771);
v(0.978805, -0.72021, 0.949484);
v(0.973093, -0.736304, 0.976101);
v(1.001408, -0.492246, 1.061402);
v(1.016821, -0.647116, 1.450056);
v(1.0447, -0.979412, 1.293413);
v(0.961766, -0.671156, 1.432628);
v(0.916832, -0.816529, 1.357997);
v(1.021197, -0.79758, 0.951805);
v(-1.056463, -0.468207, 1.078831);
v(-1.084342, -0.800503, 0.922188);
v(-1.025527, -0.779726, 0.925886);
v(-0.956473, -0.637619, 0.986771);
v(-0.978805, -0.72021, 0.949484);
v(-0.964873, -0.554148, 1.027765);
v(-1.001408, -0.492246, 1.061402);
v(-1.016821, -0.647116, 1.450056);
v(-1.0447, -0.979412, 1.293413);
v(-0.961766, -0.671156, 1.432628);
v(-0.916832, -0.816529, 1.357997);
v(-0.925231, -0.733057, 1.39899);
v(-0.939163, -0.899119, 1.320709);
v(-0.985885, -0.958636, 1.297111);
v(-0.996365, -0.5016, 1.091329);
v(-0.958749, -0.565332, 1.056696);
v(-0.950101, -0.651271, 1.014491);
v(-0.973093, -0.736304, 0.976101);
v(-1.021197, -0.79758, 0.951805);
v(-0.96273, -0.653399, 1.406302);
v(-0.925115, -0.717131, 1.37167);
v(-0.916467, -0.80307, 1.329465);
v(-0.939459, -0.888103, 1.291075);
v(-0.987562, -0.949379, 1.266779);
v(-1.019412, -0.628648, 1.424246);
v(-1.048116, -0.97077, 1.262972);
v(-1.08175, -0.818971, 0.947998);
v(-1.053047, -0.476849, 1.109273);
v(0.987562, -0.949379, 1.266779);
v(1.019412, -0.628648, 1.424246);
v(0.332908, 1.028881, 3.469695);
v(0.3287, 1.004957, 3.491114);
v(0.342716, 0.970298, 3.475237);
v(1.048116, -0.97077, 1.262972);
v(0.96273, -0.653399, 1.406302);
v(1.08175, -0.818971, 0.947998);
v(0.964873, -0.554148, 1.027765);
v(0.303032, 0.997256, 3.520582);
v(1.053047, -0.476849, 1.109273);
v(0.916467, -0.80307, 1.329465);
v(0.341869, 0.993308, 3.470974);
v(0.925115, -0.717131, 1.37167);
v(0.325405, 0.951109, 3.507307);
v(-0.341869, 0.993308, 3.470974);
v(0.939459, -0.888103, 1.291075);
v(0.925231, -0.733057, 1.39899);
v(-0.340393, 0.951679, 3.483663);
v(-0.317201, 0.970814, 3.51394);
v(-0.303032, 0.997256, 3.520582);
v(-0.325405, 0.951109, 3.507307);
v(0.939163, -0.899119, 1.320709);
v(0.317201, 0.970814, 3.51394);
v(0.985885, -0.958636, 1.297111);
v(-0.332908, 1.028881, 3.469695);
v(-0.3287, 1.004957, 3.491114);
v(-0.342716, 0.970298, 3.475237);
v(0.996365, -0.5016, 1.091329);
v(0.958749, -0.565332, 1.056696);
f2(32, 16, 40);
f2(16, 15, 40);
f2(31, 18, 16);
f2(31, 16, 32);
f2(30, 17, 18);
f2(30, 18, 31);
f2(29, 19, 30);
f2(19, 17, 30);
f2(28, 20, 29);
f2(20, 19, 29);
f2(41, 14, 28);
f2(14, 20, 28);
f2(27, 37, 22);
f2(37, 39, 22);
f2(26, 36, 27);
f2(36, 37, 27);
f2(24, 35, 26);
f2(35, 36, 26);
f2(25, 34, 35);
f2(25, 35, 24);
f2(23, 33, 34);
f2(23, 34, 25);
f2(21, 38, 23);
f2(38, 33, 23);
f2(4, 13, 49);
f2(3, 4, 49);
f2(6, 7, 4);
f2(4, 7, 13);
f2(5, 1, 6);
f2(6, 1, 7);
f2(50, 71, 1);
f2(5, 50, 1);
f2(8, 70, 71);
f2(50, 8, 71);
f2(2, 52, 70);
f2(8, 2, 70);
f2(42, 66, 10);
f2(47, 42, 10);
f2(58, 64, 66);
f2(42, 58, 66);
f2(53, 12, 64);
f2(58, 53, 64);
f2(55, 59, 53);
f2(53, 59, 12);
f2(48, 11, 55);
f2(55, 11, 59);
f2(43, 9, 11);
f2(48, 43, 11);
f2(45, 65, 51);
f2(65, 0, 56);
f2(45, 0, 65);
f2(46, 0, 45);
f2(45, 44, 54);
f2(46, 45, 54);
f2(61, 68, 62);
f2(60, 61, 63);
f2(68, 61, 60);
f2(60, 69, 68);
f2(67, 68, 57);
f2(68, 69, 57);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 101
//blackl (blackl)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class blackl extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function blackl(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-1.028059, -0.789783, 0.964753);
v(-0.97226, -0.736358, 0.991347);
v(-0.942352, -0.652928, 1.032373);
v(-0.954134, -0.535809, 1.090311);
v(-0.964184, -0.668541, 1.490601);
v(-0.916056, -0.720373, 1.465472);
v(-0.91232, -0.89115, 1.381119);
v(-1.019425, -0.971238, 1.341604);
v(-1.038255, -0.808984, 0.98746);
v(-1.00821, -0.792997, 0.995263);
v(-0.99692, -0.960487, 1.314756);
v(-0.988259, -0.496299, 1.14008);
v(-1.049698, -0.459685, 1.127908);
v(-1.046213, -0.470408, 1.152717);
v(-1.069439, -0.812643, 0.985674);
v(-1.072974, -0.798079, 0.960613);
v(-1.000772, -0.639456, 1.475272);
v(-0.997615, -0.65603, 1.497213);
v(-1.023476, -0.964504, 1.312748);
v(-1.004106, -0.474906, 1.120397);
v(-1.009195, -0.482439, 1.146845);
v(1.028059, -0.789783, 0.964753);
v(0.97226, -0.736358, 0.991347);
v(0.942352, -0.652928, 1.032373);
v(0.954134, -0.535809, 1.090311);
v(0.964184, -0.668541, 1.490601);
v(0.916056, -0.720373, 1.465472);
v(0.91232, -0.89115, 1.381119);
v(1.019425, -0.971238, 1.341604);
v(1.038255, -0.808984, 0.98746);
v(1.00821, -0.792997, 0.995263);
v(0.99692, -0.960487, 1.314756);
v(0.988259, -0.496299, 1.14008);
v(1.049698, -0.459685, 1.127908);
v(1.046213, -0.470408, 1.152717);
v(1.069439, -0.812643, 0.985674);
v(1.072974, -0.798079, 0.960613);
v(1.000772, -0.639456, 1.475272);
v(0.997615, -0.65603, 1.497213);
v(1.023476, -0.964504, 1.312748);
v(1.004106, -0.474906, 1.120397);
v(1.009195, -0.482439, 1.146845);
v(-0.962202, -0.525038, 1.126053);
v(-0.942726, -0.576464, 1.100952);
v(-0.938198, -0.663264, 1.058585);
v(-0.958193, -0.731003, 1.025522);
v(-0.979621, -0.766935, 1.007984);
v(-0.946388, -0.665937, 1.462032);
v(-0.967451, -0.945976, 1.322012);
v(-0.940336, -0.920178, 1.334911);
v(-0.920365, -0.887615, 1.351193);
v(-0.924797, -0.692415, 1.448793);
v(-0.93882, -0.929307, 1.362304);
v(-0.972282, -0.647462, 1.471269);
v(-0.909436, -0.726722, 1.431639);
v(-0.899851, -0.807895, 1.391053);
v(-0.899574, -0.820089, 1.416222);
v(-0.321206, 0.909768, 3.448249);
v(-0.307712, 0.875309, 3.465341);
v(-0.29242, 0.879449, 3.493208);
v(-0.324148, 0.943102, 3.445557);
v(-0.312916, 1.021541, 3.449333);
v(-0.288508, 0.906794, 3.503684);
v(-0.310479, 0.989794, 3.473488);
v(-0.285051, 0.997699, 3.506628);
v(-0.283838, 0.954874, 3.510079);
v(0.962202, -0.525038, 1.126053);
v(0.942726, -0.576464, 1.100952);
v(0.938198, -0.663264, 1.058585);
v(0.958193, -0.731003, 1.025522);
v(0.979621, -0.766935, 1.007984);
v(0.946388, -0.665937, 1.462032);
v(0.967451, -0.945976, 1.322012);
v(0.940336, -0.920178, 1.334911);
v(0.920365, -0.887615, 1.351193);
v(0.924797, -0.692415, 1.448793);
v(0.93882, -0.929307, 1.362304);
v(0.972282, -0.647462, 1.471269);
v(0.909436, -0.726722, 1.431639);
v(0.899851, -0.807895, 1.391053);
v(0.899574, -0.820089, 1.416222);
v(0.321206, 0.909768, 3.448249);
v(0.307712, 0.875309, 3.465341);
v(0.29242, 0.879449, 3.493208);
v(0.324148, 0.943102, 3.445557);
v(0.312916, 1.021541, 3.449333);
v(0.288508, 0.906794, 3.503684);
v(0.310479, 0.989794, 3.473488);
v(0.285051, 0.997699, 3.506628);
v(0.283838, 0.954874, 3.510079);
f2(63, 65, 62);
f2(63, 64, 65);
f2(57, 63, 62);
f2(57, 62, 59);
f2(61, 63, 60);
f2(57, 59, 58);
f2(60, 63, 57);
f2(10, 18, 7);
f2(7, 48, 10);
f2(52, 48, 7);
f2(52, 49, 48);
f2(6, 49, 52);
f2(6, 50, 49);
f2(56, 50, 6);
f2(56, 55, 50);
f2(5, 55, 56);
f2(5, 54, 55);
f2(5, 51, 54);
f2(4, 51, 5);
f2(4, 47, 51);
f2(4, 53, 47);
f2(17, 53, 4);
f2(16, 53, 17);
f2(42, 3, 43);
f2(43, 2, 44);
f2(43, 3, 2);
f2(44, 1, 45);
f2(44, 2, 1);
f2(45, 1, 46);
f2(46, 0, 9);
f2(1, 0, 46);
f2(9, 0, 8);
f2(0, 15, 8);
f2(8, 15, 14);
f2(3, 42, 11);
f2(11, 19, 3);
f2(20, 19, 11);
f2(13, 19, 20);
f2(12, 19, 13);
f2(89, 87, 86);
f2(88, 87, 89);
f2(87, 81, 86);
f2(86, 81, 83);
f2(87, 85, 84);
f2(83, 81, 82);
f2(87, 84, 81);
f2(39, 31, 28);
f2(72, 28, 31);
f2(72, 76, 28);
f2(73, 76, 72);
f2(73, 27, 76);
f2(74, 27, 73);
f2(74, 80, 27);
f2(79, 80, 74);
f2(79, 26, 80);
f2(78, 26, 79);
f2(75, 26, 78);
f2(75, 25, 26);
f2(71, 25, 75);
f2(77, 25, 71);
f2(77, 38, 25);
f2(77, 37, 38);
f2(24, 66, 67);
f2(23, 67, 68);
f2(24, 67, 23);
f2(22, 68, 69);
f2(23, 68, 22);
f2(22, 69, 70);
f2(21, 70, 30);
f2(22, 70, 21);
f2(21, 30, 29);
f2(36, 21, 29);
f2(36, 29, 35);
f2(66, 24, 32);
f2(40, 32, 24);
f2(40, 41, 32);
f2(40, 34, 41);
f2(40, 33, 34);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 102
//blue (blue)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class blue extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function blue(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-0.23196, -0.838472, 0.904508);
v(-0.19066, -0.777476, 0.971936);
v(0.120496, -0.831659, 0.94364);
v(0.140237, -0.714831, 1.038933);
v(0.23196, -0.838472, 0.904508);
v(0.19066, -0.777476, 0.971936);
v(0, -0.638232, 1.12605);
v(0, -0.723002, 1.050025);
v(0, -0.862257, 0.926139);
v(-0.120496, -0.831659, 0.94364);
v(-0.140237, -0.714831, 1.038933);
v(-0.255962, -0.901482, 0.832066);
v(0, -0.948811, 0.83146);
v(0.255962, -0.901482, 0.832066);
f2(7, 10, 6);
f2(10, 7, 9);
f2(8, 11, 9);
f2(8, 12, 11);
f2(10, 9, 1);
f2(9, 0, 1);
f2(11, 0, 9);
f2(3, 7, 6);
f2(7, 3, 2);
f2(13, 8, 2);
f2(12, 8, 13);
f2(2, 3, 5);
f2(4, 2, 5);
f2(4, 13, 2);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 103
//bluel (bluel)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class bluel extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function bluel(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(0.070849, -0.471195, 1.254381);
v(0.189312, -0.610377, 1.12218);
v(0.248162, -0.727948, 1.00483);
v(-0.093081, -0.657593, 1.083644);
v(-0.134396, -0.779515, 0.977683);
v(-0.070849, -0.471195, 1.254381);
v(-0.189312, -0.610377, 1.12218);
v(-0.248162, -0.727948, 1.00483);
v(0.093081, -0.657593, 1.083644);
v(0.134396, -0.779515, 0.977683);
v(0, -0.793027, 0.972985);
v(0, -0.690649, 1.057591);
v(0, -0.520112, 1.210722);
v(0, -0.442341, 1.282039);
f2(10, 4, 11);
f2(4, 3, 11);
f2(4, 6, 3);
f2(3, 6, 12);
f2(5, 12, 6);
f2(7, 6, 4);
f2(12, 5, 13);
f2(9, 10, 11);
f2(8, 9, 11);
f2(1, 9, 8);
f2(1, 8, 12);
f2(12, 0, 1);
f2(1, 2, 9);
f2(0, 12, 13);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 104
//bright (bright)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class bright extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function bright(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-0.26283, 1.03365, 3.526517);
v(0.30539, 1.06908, 3.472873);
v(0.284567, 1.087155, 3.471694);
v(0.271131, 1.072901, 3.497926);
v(0.322814, 1.045925, 3.472574);
v(0.303032, 0.997256, 3.520582);
v(0.332908, 1.028881, 3.469695);
v(0.311246, 1.032373, 3.497732);
v(0.3287, 1.004957, 3.491114);
v(0.269808, 1.022363, 3.527216);
v(0.281643, 1.009809, 3.529164);
v(0.26283, 1.03365, 3.526517);
v(-0.30539, 1.06908, 3.472873);
v(-0.284567, 1.087155, 3.471694);
v(-0.271131, 1.072901, 3.497926);
v(-0.322814, 1.045925, 3.472574);
v(-0.303032, 0.997256, 3.520582);
v(-0.332908, 1.028881, 3.469695);
v(-0.311246, 1.032373, 3.497732);
v(-0.3287, 1.004957, 3.491114);
v(-0.269808, 1.022363, 3.527216);
v(-0.281643, 1.009809, 3.529164);
f2(2, 1, 3);
f2(7, 1, 4);
f2(7, 4, 6);
f2(3, 9, 11);
f2(8, 7, 6);
f2(8, 5, 7);
f2(5, 10, 7);
f2(7, 10, 9);
f2(7, 9, 3);
f2(7, 3, 1);
f2(12, 13, 14);
f2(12, 18, 15);
f2(15, 18, 17);
f2(14, 0, 20);
f2(18, 19, 17);
f2(16, 19, 18);
f2(21, 16, 18);
f2(21, 18, 20);
f2(20, 18, 14);
f2(14, 18, 12);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 105
//iris1 (iris1)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class iris1 extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function iris1(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-0.322714, 1.064236, 3.441005);
v(-0.337782, 0.876889, 3.440976);
v(-0.356404, 0.993553, 3.41582);
v(-0.344434, 1.032869, 3.424522);
v(-0.359484, 0.948553, 3.415129);
v(-0.353384, 0.908439, 3.42228);
v(-0.319415, 0.867361, 3.479494);
v(-0.291206, 0.842774, 3.501906);
v(-0.302891, 0.87789, 3.515872);
v(-0.359593, 1.000829, 3.379836);
v(-0.364387, 0.955139, 3.372185);
v(-0.34836, 1.03866, 3.394109);
v(-0.361877, 0.915586, 3.371029);
v(-0.343212, 0.868673, 3.380402);
v(-0.30747, 1.096933, 3.428099);
v(-0.26283, 1.03365, 3.526517);
v(-0.273713, 0.858292, 3.54597);
v(0.284567, 1.087155, 3.471694);
v(0.27849, 0.977884, 3.540697);
v(0.284654, 0.938484, 3.54143);
v(0.331132, 1.066965, 3.41222);
v(0.263765, 0.893572, 3.563177);
v(0.257383, 0.970864, 3.553974);
v(0.269808, 1.022363, 3.527216);
v(0.290957, 0.912991, 3.536918);
v(0.304785, 1.077832, 3.455468);
v(0.316536, 0.843312, 3.442919);
v(0.281643, 1.009809, 3.529164);
v(0.322714, 1.064236, 3.441005);
v(0.337782, 0.876889, 3.440976);
v(0.356404, 0.993553, 3.41582);
v(0.344434, 1.032869, 3.424522);
v(0.359484, 0.948553, 3.415129);
v(0.353384, 0.908439, 3.42228);
v(0.319415, 0.867361, 3.479494);
v(0.291206, 0.842774, 3.501906);
v(0.302891, 0.87789, 3.515872);
v(0.359593, 1.000829, 3.379836);
v(0.364387, 0.955139, 3.372185);
v(0.34836, 1.03866, 3.394109);
v(0.361877, 0.915586, 3.371029);
v(0.343212, 0.868673, 3.380402);
v(0.30747, 1.096933, 3.428099);
v(0.26283, 1.03365, 3.526517);
v(0.273713, 0.858292, 3.54597);
v(-0.284567, 1.087155, 3.471694);
v(-0.27849, 0.977884, 3.540697);
v(-0.284654, 0.938484, 3.54143);
v(-0.331132, 1.066965, 3.41222);
v(-0.263765, 0.893572, 3.563177);
v(-0.257383, 0.970864, 3.553974);
v(-0.269808, 1.022363, 3.527216);
v(-0.290957, 0.912991, 3.536918);
v(-0.304785, 1.077832, 3.455468);
v(-0.316536, 0.843312, 3.442919);
v(-0.281643, 1.009809, 3.529164);
f2(23, 27, 22);
f2(27, 18, 22);
f2(24, 36, 21);
f2(17, 42, 25);
f2(43, 23, 22);
f2(22, 18, 19);
f2(22, 19, 21);
f2(21, 19, 24);
f2(28, 25, 42);
f2(33, 41, 29);
f2(26, 34, 29);
f2(35, 36, 34);
f2(34, 26, 35);
f2(29, 41, 26);
f2(40, 41, 33);
f2(38, 40, 32);
f2(37, 38, 30);
f2(39, 37, 31);
f2(20, 39, 31);
f2(42, 20, 28);
f2(32, 40, 33);
f2(30, 38, 32);
f2(31, 37, 30);
f2(28, 20, 31);
f2(21, 36, 44);
f2(35, 44, 36);
f2(55, 51, 50);
f2(46, 55, 50);
f2(8, 52, 49);
f2(14, 45, 53);
f2(51, 15, 50);
f2(46, 50, 47);
f2(47, 50, 49);
f2(47, 49, 52);
f2(53, 0, 14);
f2(13, 5, 1);
f2(6, 54, 1);
f2(8, 7, 6);
f2(54, 6, 7);
f2(13, 1, 54);
f2(13, 12, 5);
f2(12, 10, 4);
f2(10, 9, 2);
f2(9, 11, 3);
f2(11, 48, 3);
f2(14, 0, 48);
f2(12, 4, 5);
f2(10, 2, 4);
f2(9, 3, 2);
f2(48, 0, 3);
f2(8, 49, 16);
f2(16, 7, 8);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 106
//iris2 (iris2)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class iris2 extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function iris2(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-0.338393, 1.031013, 3.44977);
v(-0.348949, 0.997095, 3.446351);
v(-0.304277, 1.075267, 3.462557);
v(-0.322714, 1.064236, 3.441005);
v(-0.337782, 0.876889, 3.440976);
v(-0.356404, 0.993553, 3.41582);
v(-0.344434, 1.032869, 3.424522);
v(-0.359484, 0.948553, 3.415129);
v(-0.353384, 0.908439, 3.42228);
v(-0.319415, 0.867361, 3.479494);
v(-0.302891, 0.87789, 3.515872);
v(0.286978, 0.986876, 3.535494);
v(0.284567, 1.087155, 3.471694);
v(0.27849, 0.977884, 3.540697);
v(0.284654, 0.938484, 3.54143);
v(0.331314, 0.904344, 3.488576);
v(0.318832, 0.909529, 3.509017);
v(0.312275, 0.923003, 3.518822);
v(0.299411, 0.949333, 3.53056);
v(0.340774, 0.911067, 3.4705);
v(0.351575, 0.962702, 3.447894);
v(0.348482, 0.932109, 3.455333);
v(0.320132, 1.060453, 3.456326);
v(0.290957, 0.912991, 3.536918);
v(0.304785, 1.077832, 3.455468);
v(0.281643, 1.009809, 3.529164);
v(0.338393, 1.031013, 3.44977);
v(0.348949, 0.997095, 3.446351);
v(0.304277, 1.075267, 3.462557);
v(0.322714, 1.064236, 3.441005);
v(0.337782, 0.876889, 3.440976);
v(0.356404, 0.993553, 3.41582);
v(0.344434, 1.032869, 3.424522);
v(0.359484, 0.948553, 3.415129);
v(0.353384, 0.908439, 3.42228);
v(0.319415, 0.867361, 3.479494);
v(0.302891, 0.87789, 3.515872);
v(-0.286978, 0.986876, 3.535494);
v(-0.284567, 1.087155, 3.471694);
v(-0.27849, 0.977884, 3.540697);
v(-0.284654, 0.938484, 3.54143);
v(-0.331314, 0.904344, 3.488576);
v(-0.318832, 0.909529, 3.509017);
v(-0.312275, 0.923003, 3.518822);
v(-0.299411, 0.949333, 3.53056);
v(-0.340774, 0.911067, 3.4705);
v(-0.351575, 0.962702, 3.447894);
v(-0.348482, 0.932109, 3.455333);
v(-0.320132, 1.060453, 3.456326);
v(-0.290957, 0.912991, 3.536918);
v(-0.304785, 1.077832, 3.455468);
v(-0.281643, 1.009809, 3.529164);
f2(14, 13, 11);
f2(25, 11, 13);
f2(17, 16, 36);
f2(23, 17, 36);
f2(11, 18, 14);
f2(18, 17, 14);
f2(23, 14, 17);
f2(16, 15, 36);
f2(24, 28, 12);
f2(24, 29, 28);
f2(29, 22, 28);
f2(29, 32, 22);
f2(22, 32, 26);
f2(26, 32, 31);
f2(31, 27, 26);
f2(27, 31, 33);
f2(33, 20, 27);
f2(20, 33, 34);
f2(34, 21, 20);
f2(21, 34, 30);
f2(30, 19, 21);
f2(19, 30, 15);
f2(30, 35, 15);
f2(36, 15, 35);
f2(39, 40, 37);
f2(37, 51, 39);
f2(42, 43, 10);
f2(43, 49, 10);
f2(44, 37, 40);
f2(43, 44, 40);
f2(40, 49, 43);
f2(41, 42, 10);
f2(2, 50, 38);
f2(3, 50, 2);
f2(48, 3, 2);
f2(6, 3, 48);
f2(48, 0, 6);
f2(6, 0, 5);
f2(5, 0, 1);
f2(5, 1, 7);
f2(46, 7, 1);
f2(7, 46, 8);
f2(47, 8, 46);
f2(8, 47, 4);
f2(45, 4, 47);
f2(4, 45, 41);
f2(9, 4, 41);
f2(41, 10, 9);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 107
//iris3 (iris3)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class iris3 extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function iris3(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-0.338393, 1.031013, 3.44977);
v(-0.348949, 0.997095, 3.446351);
v(-0.304277, 1.075267, 3.462557);
v(-0.341869, 0.993308, 3.470974);
v(0.30539, 1.06908, 3.472873);
v(0.286978, 0.986876, 3.535494);
v(0.284567, 1.087155, 3.471694);
v(0.331314, 0.904344, 3.488576);
v(0.318832, 0.909529, 3.509017);
v(0.322814, 1.045925, 3.472574);
v(0.340393, 0.951679, 3.483663);
v(0.317201, 0.970814, 3.51394);
v(0.303032, 0.997256, 3.520582);
v(0.312275, 0.923003, 3.518822);
v(0.299411, 0.949333, 3.53056);
v(0.340774, 0.911067, 3.4705);
v(0.351575, 0.962702, 3.447894);
v(0.348482, 0.932109, 3.455333);
v(0.320132, 1.060453, 3.456326);
v(0.332908, 1.028881, 3.469695);
v(0.342716, 0.970298, 3.475237);
v(0.281643, 1.009809, 3.529164);
v(0.338393, 1.031013, 3.44977);
v(0.348949, 0.997095, 3.446351);
v(0.304277, 1.075267, 3.462557);
v(0.341869, 0.993308, 3.470974);
v(0.325405, 0.951109, 3.507307);
v(-0.30539, 1.06908, 3.472873);
v(-0.286978, 0.986876, 3.535494);
v(-0.284567, 1.087155, 3.471694);
v(-0.331314, 0.904344, 3.488576);
v(-0.318832, 0.909529, 3.509017);
v(-0.322814, 1.045925, 3.472574);
v(-0.340393, 0.951679, 3.483663);
v(-0.317201, 0.970814, 3.51394);
v(-0.303032, 0.997256, 3.520582);
v(-0.325405, 0.951109, 3.507307);
v(-0.312275, 0.923003, 3.518822);
v(-0.299411, 0.949333, 3.53056);
v(-0.340774, 0.911067, 3.4705);
v(-0.351575, 0.962702, 3.447894);
v(-0.348482, 0.932109, 3.455333);
v(-0.320132, 1.060453, 3.456326);
v(-0.332908, 1.028881, 3.469695);
v(-0.342716, 0.970298, 3.475237);
v(-0.281643, 1.009809, 3.529164);
f2(8, 10, 7);
f2(12, 11, 5);
f2(13, 11, 26);
f2(26, 10, 13);
f2(13, 10, 8);
f2(14, 5, 11);
f2(11, 13, 14);
f2(15, 10, 17);
f2(16, 17, 10);
f2(4, 18, 9);
f2(10, 15, 7);
f2(9, 18, 19);
f2(10, 20, 16);
f2(24, 18, 4);
f2(6, 24, 4);
f2(25, 23, 16);
f2(19, 18, 22);
f2(19, 22, 23);
f2(19, 23, 25);
f2(5, 21, 12);
f2(25, 16, 20);
f2(33, 31, 30);
f2(34, 35, 28);
f2(34, 37, 36);
f2(33, 36, 37);
f2(33, 37, 31);
f2(28, 38, 34);
f2(37, 34, 38);
f2(33, 39, 41);
f2(41, 40, 33);
f2(42, 27, 32);
f2(39, 33, 30);
f2(42, 32, 43);
f2(44, 33, 40);
f2(42, 2, 27);
f2(2, 29, 27);
f2(1, 3, 40);
f2(43, 0, 42);
f2(0, 43, 1);
f2(1, 43, 3);
f2(45, 28, 35);
f2(40, 3, 44);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 108
//papervision (papervision)
package {
import org.papervision3d.view.*;
import flash.display.*;
import org.papervision3d.objects.*;
import flash.events.*;
import org.papervision3d.render.*;
import flash.utils.*;
import org.papervision3d.scenes.*;
import org.papervision3d.materials.*;
import org.papervision3d.lights.*;
import org.papervision3d.cameras.*;
import org.papervision3d.materials.shadematerials.*;
public class papervision extends Sprite {
private var active:Boolean;// = false
private var containerl:DisplayObject3D;
private var camera:Camera3D;
private var Model_blackl;
private var Model_black;
private var Model_red;
private var typenow;// = 0
private var pointLight:PointLight3D;
private var Model_yellowl;
private var st:Stage;
private var Model_whitel;
private var stageWidth;// = 680
private var Model_white;
private var target:DisplayObject3D;
private var scene:Scene3D;
private var viewport:Viewport3D;
private var Model_redl;
private var container:DisplayObject3D;
private var Model_bluel;
private var renderer:BasicRenderEngine;
private var stageHeight;// = 440
private var Model_iris1;
private var Model_iris2;
private var Model_iris3;
private var time:Timer;
private var Model_blue;
private var qualitylevel:String;
private var myMaterials;
private var Model_bright;
private var Model_tongue;
public function papervision(){
stageWidth = 680;
stageHeight = 440;
typenow = 0;
active = false;
super();
}
public function changeport(_arg1:Number){
if (_arg1 == 0){
typenow = 0;
} else {
if (_arg1 == 1){
reset(target);
typenow = 1;
};
};
}
private function reset(_arg1:DisplayObject3D){
_arg1.rotationX = 0;
_arg1.rotationY = 180;
}
public function create3D(_arg1:Stage, _arg2:String){
qualitylevel = _arg2;
if (!active){
active = true;
st = _arg1;
init3D();
} else {
scene.addChild(target);
time.addEventListener(TimerEvent.TIMER, render);
time.reset();
time.start();
};
}
private function render(_arg1:TimerEvent):void{
if (typenow == 0){
target.rotationY = ((-(((st.mouseX - (st.stageWidth / 2)) / stageWidth)) * 360) + 180);
target.rotationX = (-(((st.mouseY - (st.stageHeight / 2)) / (stageHeight * 2.5))) * 360);
} else {
if (typenow == 1){
target.rotationY = (target.rotationY + 1.5);
};
};
renderer.renderScene(scene, camera, viewport);
}
public function clean3D(){
scene.removeChild(target);
renderer.renderScene(scene, camera, viewport);
time.removeEventListener(TimerEvent.TIMER, render);
time.stop();
}
private function init3D():void{
time = new Timer((1000 / st.frameRate), 0);
time.reset();
time.start();
scene = new Scene3D();
pointLight = new PointLight3D();
scene.addChild(pointLight);
Model_white = new white(new GouraudMaterial(pointLight, 0xFFFFFF, 0x777777));
Model_bright = new bright(new GouraudMaterial(pointLight, 0xFFFFFF, 0xFFFFFF));
Model_black = new black(new ColorMaterial(0));
Model_blue = new blue(new GouraudMaterial(pointLight, 1344220, 670830));
Model_iris1 = new iris1(new GouraudMaterial(pointLight, 0xFFFF00, 0xC8C800));
Model_iris2 = new iris2(new GouraudMaterial(pointLight, 15124610, 11834960));
Model_iris3 = new iris3(new GouraudMaterial(pointLight, 8803362, 0x501E00));
Model_red = new red(new GouraudMaterial(pointLight, 0xFF0000, 0x820000));
Model_tongue = new tongue(new GouraudMaterial(pointLight, 0xBE0000, 0xA00000));
Model_whitel = new whitel(new GouraudMaterial(pointLight, 0xFFFFFF, 0x777777));
Model_blackl = new blackl(new ColorMaterial(0));
Model_bluel = new bluel(new GouraudMaterial(pointLight, 1344220, 670830));
Model_yellowl = new yellowl(new GouraudMaterial(pointLight, 0xFFFF00, 0x828200));
Model_redl = new redl(new GouraudMaterial(pointLight, 0xFF0000, 0x820000));
container = new DisplayObject3D();
container.addChild(Model_white);
container.addChild(Model_bright);
container.addChild(Model_black);
container.addChild(Model_blue);
container.addChild(Model_iris1);
container.addChild(Model_iris2);
container.addChild(Model_iris3);
container.addChild(Model_red);
container.addChild(Model_tongue);
containerl = new DisplayObject3D();
containerl.addChild(Model_whitel);
containerl.addChild(Model_blackl);
containerl.addChild(Model_bluel);
containerl.addChild(Model_yellowl);
containerl.addChild(Model_redl);
if (qualitylevel == "HIGH"){
target = container;
} else {
target = containerl;
};
scene.addChild(target);
camera = new Camera3D();
camera.zoom = 90;
camera.focus = 9;
camera.z = -5;
viewport = new Viewport3D(stageWidth, stageHeight);
st.addChild(viewport);
renderer = new BasicRenderEngine();
time.addEventListener(TimerEvent.TIMER, render);
}
public function quality(_arg1:String){
if (_arg1 == "HIGH"){
qualitylevel = "HIGH";
target = container;
scene.removeChild(container);
scene.removeChild(containerl);
scene.addChild(container);
} else {
if (_arg1 == "LOW"){
qualitylevel = "LOW";
target = containerl;
scene.removeChild(container);
scene.removeChild(containerl);
scene.addChild(containerl);
};
};
reset(target);
}
}
}//package
Section 109
//red (red)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class red extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function red(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-1.10618, -1.952935, -1.714549);
v(-1.191225, -2.073671, -1.911019);
v(0.091925, -1.143922, 0.580936);
v(-1.110204, -2.064277, -1.911797);
v(-1.188921, -2.07431, -1.878621);
v(-1.156317, -2.10192, -1.92998);
v(-1.511453, -1.981507, -1.294303);
v(0.105995, 0.963283, 3.649982);
v(0.169869, 0.886039, 3.634872);
v(-1.403414, -2.126603, -1.773699);
v(-1.267956, -2.048758, -1.740495);
v(1.254703, 0.176454, -1.12596);
v(0.872428, -0.150824, -1.111036);
v(1.182648, 0.109111, -1.22063);
v(2.009745, 0.988047, -0.997808);
v(1.434563, 0.644897, -0.604595);
v(1.717743, 0.539584, -1.399808);
v(1.484521, 0.379013, -1.339728);
v(1.696938, 0.506987, -1.358853);
v(2.047061, 1.016894, -1.070203);
v(2.629995, 1.331481, -1.430573);
v(2.476314, 1.128972, -1.591019);
v(2.46275, 1.071907, -1.588277);
v(2.124825, 0.986901, -1.101418);
v(2.166577, 0.923386, -1.27005);
v(2.037031, 0.984125, -1.011375);
v(2.132521, 0.947381, -1.407699);
v(2.446574, 1.095559, -1.594055);
v(1.561051, 0.667289, -0.719293);
v(1.543451, 0.493175, -0.952357);
v(1.159642, 0.516076, -0.435137);
v(0.745454, 0.309059, -0.220174);
v(0.78993, 0.313244, -0.171163);
v(0.897161, 0.351088, -0.487521);
v(0.689279, -0.325117, -1.10817);
v(0.992611, -0.031519, -1.201338);
v(0.850918, -0.136688, -0.908263);
v(0.648952, -0.310051, -1.12134);
v(0.755671, -0.172742, -1.13926);
v(0.670485, -0.073351, -1.02112);
v(0.132435, -1.343436, -1.385728);
v(1.43935, 0.3506, -1.06656);
v(1.437307, 0.397107, -1.283477);
v(0.934008, 0.173065, -0.951243);
v(2.646428, 1.288616, -1.576997);
v(2.670359, 1.245936, -1.666278);
v(2.628357, 1.305437, -1.39753);
v(2.084111, 0.992492, -1.241492);
v(2.00823, 0.748635, -1.357992);
v(0.710516, 0.132547, -0.763234);
v(0.786741, 0.011962, -1.014854);
v(0.776362, 0.154574, -0.772735);
v(0.915458, 0.274376, -0.732524);
v(0.938147, 0.047632, -1.126034);
v(0.961833, 0.325634, -0.312589);
v(0.790541, 0.264247, -0.153128);
v(0.898254, 0.345587, -0.238151);
v(0.996465, 0.067203, -0.776956);
v(0.953878, 0.122764, -0.580244);
v(0.972699, 0.244496, -0.419824);
v(0.739999, 0.272465, -0.444491);
v(2.880954, 1.389492, -1.726628);
v(3.131364, 1.580023, -1.782877);
v(3.281747, 1.692171, -1.822496);
v(1.602692, 0.620723, -1.176326);
v(2.395894, 1.034495, -1.58987);
v(2.508356, 1.103774, -1.579163);
v(2.714607, 1.374834, -1.449324);
v(3.177567, 1.631847, -1.775526);
v(2.660143, 1.269609, -1.493956);
v(1.572907, 0.717228, -0.910034);
v(1.525932, 0.580065, -0.777287);
v(0.907224, 0.386245, -0.337922);
v(1.700666, 0.821318, -0.864781);
v(2.66697, 1.214416, -1.654423);
v(2.659527, 1.224264, -1.666565);
v(2.654357, 0.983854, -2.021646);
v(2.63005, 1.216124, -1.661702);
v(2.633719, 1.194845, -1.612384);
v(2.831447, 1.114007, -2.071171);
v(2.671646, 1.220051, -1.653968);
v(2.833864, 1.346475, -1.686215);
v(2.860808, 1.354437, -1.736088);
v(2.854687, 1.354337, -1.748166);
v(2.822959, 1.351812, -1.722156);
v(2.459997, 1.07619, -1.611757);
v(2.487895, 1.080582, -1.641505);
v(1.191225, -2.073671, -1.911019);
v(1.160218, -2.059278, -1.937163);
v(1.110204, -2.064277, -1.911797);
v(1.188921, -2.07431, -1.878621);
v(-1.514098, -2.087043, -1.567671);
v(1.511453, -1.981507, -1.294303);
v(1.388677, -1.933359, -1.284193);
v(1.475846, -1.973993, -1.352985);
v(1.403414, -2.126603, -1.773699);
v(1.267956, -2.048758, -1.740495);
v(-1.389682, -2.035605, -1.537473);
v(1.304738, -2.035759, -1.682627);
v(1.281188, -2.039798, -1.673551);
v(1.33142, -1.992485, -1.557572);
v(1.514098, -2.087043, -1.567671);
v(1.389682, -2.035605, -1.537473);
v(-1.419714, -2.014126, -1.508565);
v(1.409712, -2.028905, -1.515081);
v(0.05447, -1.122516, -1.622402);
v(0.064048, -0.943389, -1.483275);
v(0.152472, -0.996429, -1.473851);
v(0.217731, -1.067188, -1.431954);
v(0.15656, -1.2037, -1.561732);
v(0.234983, -1.166412, -1.397764);
v(0.036881, -1.388553, -1.501193);
v(0.062012, -1.348255, -1.218458);
v(0.408759, -1.303234, -1.081616);
v(0.371642, -1.336817, -1.145089);
v(0.156501, -1.271183, -1.541625);
v(0.096646, -1.348461, -1.599639);
v(0.126811, -1.146482, -1.584018);
v(0.196679, -1.273913, -1.381779);
v(0.340714, -0.643184, -1.133418);
v(0.3611, -0.326293, -1.062097);
v(0.49632, -0.457444, -1.112515);
v(0.337799, -0.524407, -1.116795);
v(0.659504, -0.490208, -0.980039);
v(0.54015, -0.717645, -1.004955);
v(0.467933, -0.657833, -1.086385);
v(0.585639, -0.497945, -1.076845);
v(0.626215, 0.077171, -0.830942);
v(-0.349385, -1.116325, -1.058524);
v(0.83232, -0.327147, -0.382782);
v(0.800117, -0.507105, -0.534345);
v(0.828707, -0.451827, -0.381024);
v(0.826244, -0.604533, -0.438252);
v(0.859003, -0.114884, -0.427181);
v(0.824292, -0.180251, -0.23023);
v(0.344681, -1.031747, -1.135181);
v(0.324594, -0.955889, -1.200799);
v(0.259292, -0.822959, -1.247416);
v(0.135395, -0.722332, -1.269223);
v(0.01588, -1.392496, -1.77633);
v(0.024816, -1.37517, -1.778039);
v(0.019575, -1.353653, -1.780211);
v(0, -1.38159, -1.79);
v(-6.3E-5, -1.071053, -1.597733);
v(-0.05447, -1.122516, -1.622402);
v(-0.126811, -1.146482, -1.584018);
v(-0.15656, -1.2037, -1.561732);
v(-0.156501, -1.271183, -1.541625);
v(-0.096646, -1.348461, -1.599639);
v(-0.132435, -1.343436, -1.385728);
v(-0.036881, -1.388553, -1.501193);
v(4E-6, -1.388656, -1.46463);
v(0, -1.343011, -1.781111);
v(-0.019575, -1.353653, -1.780211);
v(-0.024816, -1.37517, -1.778039);
v(-0.01588, -1.392496, -1.77633);
v(0.603727, -0.031963, -0.951032);
v(0.695659, 0.267052, -0.067294);
v(0.658831, 0.289023, -0.12551);
v(0.730262, -0.50442, -0.869104);
v(0.794291, -0.439878, -0.785726);
v(0.646823, -0.674043, -0.882234);
v(0.226245, -1.457512, -0.438039);
v(0.304872, -1.410158, -0.533049);
v(0.171612, -1.454731, -0.538708);
v(0.515353, -1.275166, -0.512966);
v(0.480164, -1.324618, -0.436465);
v(0.401918, -1.306013, -0.676151);
v(0.228583, -1.28403, -0.927532);
v(0.090692, -1.342176, -0.88723);
v(0.251431, -1.410534, -0.064565);
v(0.20655, -1.45984, -0.266365);
v(0.613181, -1.2295, -0.093377);
v(0.623241, -1.178489, 0.072072);
v(0.277314, -1.317635, 0.199409);
v(0.49199, -1.267486, 0.094842);
v(0.559556, -1.28403, -0.171377);
v(0.425339, -1.373595, -0.340242);
v(0.408547, -1.374569, -0.163717);
v(0.561513, -1.191409, -0.597138);
v(0.690649, -1.083245, -0.454414);
v(0.488598, -1.151051, -0.805817);
v(0.610425, -1.048784, -0.708654);
v(0.549338, -1.028972, -0.850619);
v(0.470203, 0.343165, -0.330155);
v(0.573124, 0.319611, -0.35704);
v(0.467165, 0.260121, -0.652953);
v(0.33993, 0.23759, -0.673076);
v(0.450813, 0.314429, -0.519033);
v(0.327533, 0.043111, -0.883524);
v(0.355414, 0.140939, -0.801493);
v(0.84416, -0.35493, -0.699246);
v(0.416525, -0.129716, -0.988026);
v(0.53346, -0.029611, -0.943666);
v(0.62961, -1.113363, 0.21441);
v(0.869769, -0.224636, -0.509802);
v(0.854183, -0.349463, -0.586726);
v(0.773101, -0.943975, -0.441186);
v(0.769213, -0.779583, -0.556612);
v(0.526243, -0.303921, -1.091353);
v(0.221275, -0.381114, -1.076939);
v(0.146503, -0.171394, -0.975112);
v(0.700293, -0.373049, -1.007594);
v(0.585159, -0.198345, -1.070387);
v(0.378291, 0.339891, -0.353752);
v(0.487924, 0.339168, -0.107945);
v(0.359544, 0.327515, -0.093857);
v(0.27437, -1.296863, -1.144629);
v(0.215467, -1.284723, -1.138191);
v(0.1568, -1.322916, -1.263344);
v(0.170999, -1.329924, -1.380518);
v(0.146602, -1.329778, -1.416569);
v(0.977203, -0.027787, -0.986276);
v(0.44947, -0.834008, -1.059385);
v(0.403178, -0.933082, -1.087262);
v(0.396552, -0.746771, -1.109952);
v(0.274175, -0.725526, -1.186664);
v(0.3357, -0.848156, -1.16926);
v(0.142293, -0.637965, -1.211636);
v(0.231176, -0.555307, -1.144929);
v(0.336605, -1.442637, -1.436498);
v(0.402323, -1.474077, -1.482023);
v(0.214062, -1.324184, -1.381884);
v(1.118308, -0.934301, 1.2883);
v(0.294122, -1.372318, -1.409295);
v(0.632738, 0.258868, 0.013707);
v(0.314629, -1.351906, -1.372776);
v(-1.388677, -1.933359, -1.284193);
v(0.22818, -1.266142, -1.320951);
v(0.292065, -1.213031, -1.174691);
v(0.375955, -1.050633, 0.615238);
v(0.329143, -1.211781, 0.389898);
v(0.546268, -1.084203, 0.4008);
v(0.502924, -1.188227, 0.275627);
v(0.547677, 0.304059, -0.005411);
v(0.12176, -1.402638, 0.053696);
v(0.771979, -0.586892, -0.638183);
v(0.723071, -0.633415, -0.753028);
v(0.631006, -0.894705, -0.806819);
v(0.507299, -0.959889, -0.963486);
v(0.389242, -1.299946, 0.150669);
v(0.615728, -1.242279, -0.26905);
v(0.108141, -1.334682, 0.234141);
v(0.261005, -1.375204, -0.696387);
v(0.123461, -1.419706, -0.690069);
v(-1.475846, -1.973993, -1.352985);
v(1.420677, -1.921693, -1.268554);
v(0.710095, -1.740808, -1.629296);
v(0.748294, 0.174818, -0.122157);
v(1.064516, -2.035728, -1.85552);
v(1.601052, -2.013159, -1.313756);
v(0.807063, -1.533164, -1.164528);
v(0.155172, -1.030652, 0.716099);
v(1.458148, -1.913141, -1.305433);
v(0.451208, -1.06161, 0.540855);
v(0.209067, 0.829329, 3.607319);
v(0.124131, 0.796747, 3.665851);
v(0.163451, 1.060346, 3.572802);
v(0.131968, 1.246115, 3.399005);
v(0.192929, 1.102495, 3.522398);
v(0.400967, 0.991577, 3.204843);
v(0.366058, 1.143878, 3.197206);
v(0.282877, 1.251968, 3.204626);
v(0.154402, 1.326713, 3.212447);
v(0.250055, 1.176705, 3.395227);
v(0.922657, -1.798041, -1.6569);
v(0.645945, -1.594937, -1.542571);
v(1.085114, -1.976643, -1.867451);
v(1.235271, -1.966687, -1.671564);
v(0.839702, -0.128238, -0.724699);
v(1.029001, -1.778183, -1.502959);
v(-0.845081, -0.576071, -0.373682);
v(1.202812, -1.934554, -1.570781);
v(0.893962, -1.72093, -1.530863);
v(-1.323826, -2.088248, -1.733009);
v(0.394799, -1.330163, -1.265692);
v(1.234536, -2.144927, -1.994576);
v(1.277257, -1.898375, -1.409215);
v(1.189974, -1.837675, -1.405002);
v(1.292473, -1.924025, -1.518666);
v(-1.304738, -2.035759, -1.682627);
v(0.920952, -1.58742, -1.208451);
v(0.418665, -1.274574, -1.118778);
v(1.489491, -1.964425, -1.345915);
v(0.996937, -1.684594, -1.339646);
v(-0.327157, -1.145256, -1.055457);
v(-1.281188, -2.039798, -1.673551);
v(1.094587, -1.89011, -1.53161);
v(0.96332, -1.801778, -1.469722);
v(0.57054, -1.525195, -1.308143);
v(0.660059, -1.696666, -1.631475);
v(1.233434, -1.953622, -1.49653);
v(-1.33142, -1.992485, -1.557572);
v(0.893001, -1.666919, -1.265437);
v(1.187047, -1.857061, -1.394475);
v(1.041996, -1.911131, -1.667446);
v(0.82881, -1.780049, -1.581843);
v(1.10618, -1.952935, -1.714549);
v(1.156317, -2.10192, -1.92998);
v(1.323826, -2.088248, -1.733009);
v(0.306133, -1.191867, -1.038769);
v(-1.409712, -2.028905, -1.515081);
v(1.419714, -2.014126, -1.508565);
v(-0.064048, -0.943389, -1.483275);
v(-1.160218, -2.059278, -1.937163);
v(-0.152472, -0.996429, -1.473851);
v(-0.344681, -1.031747, -1.135181);
v(0.326366, -1.202056, -0.968945);
v(-0.217731, -1.067188, -1.431954);
v(1.104261, -0.478608, 0.678322);
v(1.132248, -0.520599, 0.689209);
v(1.104987, -0.534961, 0.679344);
v(1.135702, -0.457761, 0.73076);
v(1.09732, -0.451643, 0.711166);
v(1.158169, -0.647277, 0.796528);
v(1.176218, -0.551869, 0.804082);
v(1.095571, -0.434055, 0.750507);
v(1.083648, -0.424645, 0.853854);
v(1.136862, -0.453952, 0.896908);
v(1.096292, -0.705844, 0.801549);
v(1.182196, -0.580075, 1.007713);
v(1.072732, -0.434062, 0.936245);
v(1.098135, -0.497901, 1.142124);
v(1.181206, -0.721096, 1.016937);
v(1.089011, -0.766375, 0.875488);
v(-1.6E-5, -1.350042, -1.202541);
v(1.004734, -0.741687, 1.570536);
v(1.063874, -0.637783, 1.424395);
v(1.011924, -0.688813, 1.507103);
v(1.151626, -0.7661, 1.357681);
v(1.119245, -0.684919, 1.398325);
v(0.000105, -0.700761, -1.283944);
v(1.150395, -0.858221, 1.320661);
v(1.079571, -0.961634, 1.259715);
v(1.04134, -0.826491, 1.639351);
v(1.000015, -0.799918, 1.628094);
v(1.101853, -0.941202, 1.530144);
v(1.053096, -1.013484, 1.499383);
v(1.018548, -1.022982, 1.521337);
v(1.028576, -1.013499, 1.435585);
v(0.996527, -0.857439, 1.669959);
v(0.995074, -0.9125, 1.69269);
v(1.074018, -0.901472, 1.624857);
v(1.030088, -0.996501, 1.650021);
v(1.016318, -0.930515, 1.691592);
v(1.002349, -1.002832, 1.650123);
v(0.995581, -0.96875, 1.694231);
v(-0.324594, -0.955889, -1.200799);
v(1.009475, -1.019655, 1.593421);
v(1.058131, -0.932467, 1.170754);
v(1.150427, -0.540271, 1.098349);
v(1.143193, -0.815779, 1.011267);
v(1.06961, -0.882111, 1.063588);
v(1.031552, -0.565508, 1.308656);
v(1.043031, -0.515153, 1.201492);
v(1.106754, -0.590824, 0.702754);
v(1.056463, -0.468207, 1.078831);
v(1.084342, -0.800503, 0.922188);
v(-0.062012, -1.348255, -1.218458);
v(-0.306133, -1.191867, -1.038769);
v(1.016821, -0.647116, 1.450056);
v(1.0447, -0.979412, 1.293413);
v(-0.164492, -1.270068, -0.999839);
v(0.000258, -1.299332, -1.000024);
v(1.019412, -0.628648, 1.424246);
v(1.048116, -0.97077, 1.262972);
v(1.08175, -0.818971, 0.947998);
v(1.053047, -0.476849, 1.109273);
v(0.135151, -1.300384, -1.002051);
v(-0.408759, -1.303234, -1.081616);
v(0.2442, -1.236163, -1.017966);
v(0.327157, -1.145256, -1.055457);
v(0.176556, -1.304215, -1.402711);
v(0.349385, -1.116325, -1.058524);
v(0.823319, 0.058913, -0.337715);
v(0.779611, -0.056312, -0.082965);
v(-0.371642, -1.336817, -1.145089);
v(0.463687, 0.146642, -0.801009);
v(0.633173, 0.165917, -0.730681);
v(0.599245, 0.262041, -0.5836);
v(0.707599, 0.186251, -0.662917);
v(0.680956, 0.262505, -0.437405);
v(1.114223, -0.792707, 0.920365);
v(-0.196679, -1.273913, -1.381779);
v(0.338829, 0.311345, -0.489665);
v(0.663303, 0.288436, -0.284905);
v(0.419267, 0.349573, -0.186702);
v(0.821811, 0.16304, -0.277015);
v(0.742887, -0.998991, 0.13329);
v(0.760132, -1.021961, -0.06655);
v(0.779434, -0.960931, -0.361957);
v(0.704313, -0.953809, 0.333292);
v(0.245214, -0.560389, 1.133921);
v(0.538455, -0.817057, 0.732258);
v(0.090505, -0.381736, 1.325263);
v(0.641906, -0.888524, 0.533206);
v(0.75843, -0.032346, 0.002009);
v(0.823626, -0.208277, -0.143108);
v(0.845308, -0.380863, -0.261093);
v(0.845081, -0.576071, -0.373682);
v(0.587316, 0.206008, 0.169704);
v(0.518214, 0.254124, 0.14969);
v(0.349493, 0.318012, 0.023346);
v(0.178152, 0.287448, -0.4177);
v(0.145851, 0.2155, -0.614128);
v(0.863826, -0.731841, -0.291152);
v(0.820035, -0.778682, -0.436779);
v(0.126189, 0.093035, -0.79609);
v(0.119417, -0.073534, -0.917787);
v(0.263753, 0.324366, -0.140467);
v(0.211068, 0.312719, -0.27947);
v(0.643935, 0.141133, 0.152896);
v(0.863643, -0.780682, -0.197716);
v(0.829076, -0.839068, -0.366433);
v(0.871306, -0.217389, -0.595264);
v(-0.091925, -1.143922, 0.580936);
v(0.805769, -0.241454, -0.830279);
v(-0.872428, -0.150824, -1.111036);
v(-1.182648, 0.109111, -1.22063);
v(-2.009745, 0.988047, -0.997808);
v(-1.434563, 0.644897, -0.604595);
v(-1.717743, 0.539584, -1.399808);
v(0.759072, -0.313594, -0.908743);
v(-1.696938, 0.506987, -1.358853);
v(-2.047061, 1.016894, -1.070203);
v(-2.629995, 1.331481, -1.430573);
v(-2.476314, 1.128972, -1.591019);
v(-2.46275, 1.071907, -1.588277);
v(0.774287, -0.252623, -1.009831);
v(-2.166577, 0.923386, -1.27005);
v(-2.037031, 0.984125, -1.011375);
v(-2.132521, 0.947381, -1.407699);
v(-2.446574, 1.095559, -1.594055);
v(-1.561051, 0.667289, -0.719293);
v(0.875879, 0.040314, -0.54355);
v(-1.159642, 0.516076, -0.435137);
v(-0.745454, 0.309059, -0.220174);
v(-0.78993, 0.313244, -0.171163);
v(-0.897161, 0.351088, -0.487521);
v(-0.689279, -0.325117, -1.10817);
v(0.853056, -0.045887, -0.573487);
v(-0.850918, -0.136688, -0.908263);
v(-0.648952, -0.310051, -1.12134);
v(-0.755671, -0.172742, -1.13926);
v(-0.670485, -0.073351, -1.02112);
v(-0.977203, -0.027787, -0.986276);
v(0, -1.3988, -1.774965);
v(-1.437307, 0.397107, -1.283477);
v(-0.934008, 0.173065, -0.951243);
v(-2.646428, 1.288616, -1.576997);
v(-2.670359, 1.245936, -1.666278);
v(-2.628357, 1.305437, -1.39753);
v(-2.084111, 0.992492, -1.241492);
v(-2.00823, 0.748635, -1.357992);
v(-0.710516, 0.132547, -0.763234);
v(-0.786741, 0.011962, -1.014854);
v(-0.776362, 0.154574, -0.772735);
v(-0.915458, 0.274376, -0.732524);
v(-0.938147, 0.047632, -1.126034);
v(-0.961833, 0.325634, -0.312589);
v(-0.790541, 0.264247, -0.153128);
v(-0.898254, 0.345587, -0.238151);
v(-0.996465, 0.067203, -0.776956);
v(-0.953878, 0.122764, -0.580244);
v(-0.972699, 0.244496, -0.419824);
v(-0.739999, 0.272465, -0.444491);
v(-2.880954, 1.389492, -1.726628);
v(-3.131364, 1.580023, -1.782877);
v(-3.281747, 1.692171, -1.822496);
v(-1.602692, 0.620723, -1.176326);
v(-2.395894, 1.034495, -1.58987);
v(-2.508356, 1.103774, -1.579163);
v(-2.714607, 1.374834, -1.449324);
v(-3.177567, 1.631847, -1.775526);
v(-2.660143, 1.269609, -1.493956);
v(-1.572907, 0.717228, -0.910034);
v(-1.525932, 0.580065, -0.777287);
v(-0.907224, 0.386245, -0.337922);
v(-1.700666, 0.821318, -0.864781);
v(-2.66697, 1.214416, -1.654423);
v(-2.659527, 1.224264, -1.666565);
v(-2.654357, 0.983854, -2.021646);
v(-2.63005, 1.216124, -1.661702);
v(-2.633719, 1.194845, -1.612384);
v(-2.831447, 1.114007, -2.071171);
v(-2.671646, 1.220051, -1.653968);
v(-2.833864, 1.346475, -1.686215);
v(-2.860808, 1.354437, -1.736088);
v(-2.854687, 1.354337, -1.748166);
v(-2.822959, 1.351812, -1.722156);
v(-2.459997, 1.07619, -1.611757);
v(-2.487895, 1.080582, -1.641505);
v(1.443683, -1.906648, -1.317494);
v(0.293151, -1.168501, -1.148953);
v(-0.326366, -1.202056, -0.968945);
v(-0.340714, -0.643184, -1.133418);
v(-0.3611, -0.326293, -1.062097);
v(-0.49632, -0.457444, -1.112515);
v(-0.337799, -0.524407, -1.116795);
v(-0.659504, -0.490208, -0.980039);
v(-0.54015, -0.717645, -1.004955);
v(-0.467933, -0.657833, -1.086385);
v(-0.585639, -0.497945, -1.076845);
v(-0.626215, 0.077171, -0.830942);
v(-0.83232, -0.327147, -0.382782);
v(-0.800117, -0.507105, -0.534345);
v(-0.828707, -0.451827, -0.381024);
v(-0.826244, -0.604533, -0.438252);
v(-0.859003, -0.114884, -0.427181);
v(-0.824292, -0.180251, -0.23023);
v(-0.823319, 0.058913, -0.337715);
v(-0.779611, -0.056312, -0.082965);
v(-0.463687, 0.146642, -0.801009);
v(-0.633173, 0.165917, -0.730681);
v(-0.599245, 0.262041, -0.5836);
v(-0.707599, 0.186251, -0.662917);
v(-0.680956, 0.262505, -0.437405);
v(-0.338829, 0.311345, -0.489665);
v(-0.663303, 0.288436, -0.284905);
v(-0.419267, 0.349573, -0.186702);
v(-0.821811, 0.16304, -0.277015);
v(-0.724487, 0.242103, -0.085012);
v(-0.748294, 0.174818, -0.122157);
v(-0.680678, 0.195702, 0.015804);
v(-0.839702, -0.128238, -0.724699);
v(-0.871306, -0.217389, -0.595264);
v(-0.805769, -0.241454, -0.830279);
v(-0.759072, -0.313594, -0.908743);
v(-0.774287, -0.252623, -1.009831);
v(-0.875879, 0.040314, -0.54355);
v(-0.853056, -0.045887, -0.573487);
v(-0.603727, -0.031963, -0.951032);
v(-0.695659, 0.267052, -0.067294);
v(-0.658831, 0.289023, -0.12551);
v(-0.730262, -0.50442, -0.869104);
v(-0.794291, -0.439878, -0.785726);
v(-0.646823, -0.674043, -0.882234);
v(-0.226245, -1.457512, -0.438039);
v(-0.304872, -1.410158, -0.533049);
v(-0.171612, -1.454731, -0.538708);
v(-0.515353, -1.275166, -0.512966);
v(-0.480164, -1.324618, -0.436465);
v(-0.401918, -1.306013, -0.676151);
v(-0.228583, -1.28403, -0.927532);
v(-0.090692, -1.342176, -0.88723);
v(-0.251431, -1.410534, -0.064565);
v(-0.20655, -1.45984, -0.266365);
v(-0.623241, -1.178489, 0.072072);
v(-0.277314, -1.317635, 0.199409);
v(-0.49199, -1.267486, 0.094842);
v(-0.559556, -1.28403, -0.171377);
v(-0.425339, -1.373595, -0.340242);
v(-0.408547, -1.374569, -0.163717);
v(-0.561513, -1.191409, -0.597138);
v(-0.690649, -1.083245, -0.454414);
v(-0.488598, -1.151051, -0.805817);
v(-0.610425, -1.048784, -0.708654);
v(-0.549338, -1.028972, -0.850619);
v(-0.470203, 0.343165, -0.330155);
v(-0.573124, 0.319611, -0.35704);
v(-0.467165, 0.260121, -0.652953);
v(-0.33993, 0.23759, -0.673076);
v(-0.450813, 0.314429, -0.519033);
v(-0.327533, 0.043111, -0.883524);
v(-0.355414, 0.140939, -0.801493);
v(-0.84416, -0.35493, -0.699246);
v(-0.416525, -0.129716, -0.988026);
v(-0.53346, -0.029611, -0.943666);
v(-0.62961, -1.113363, 0.21441);
v(-0.869769, -0.224636, -0.509802);
v(-0.854183, -0.349463, -0.586726);
v(0.19143, -1.344387, -1.331735);
v(-0.773101, -0.943975, -0.441186);
v(-0.769213, -0.779583, -0.556612);
v(-0.526243, -0.303921, -1.091353);
v(-0.221275, -0.381114, -1.076939);
v(-0.146503, -0.171394, -0.975112);
v(-0.700293, -0.373049, -1.007594);
v(-0.585159, -0.198345, -1.070387);
v(-0.378291, 0.339891, -0.353752);
v(-0.487924, 0.339168, -0.107945);
v(-0.359544, 0.327515, -0.093857);
v(-0.44947, -0.834008, -1.059385);
v(-0.403178, -0.933082, -1.087262);
v(-0.396552, -0.746771, -1.109952);
v(-0.274175, -0.725526, -1.186664);
v(-0.3357, -0.848156, -1.16926);
v(-0.142293, -0.637965, -1.211636);
v(-0.231176, -0.555307, -1.144929);
v(-0.632738, 0.258868, 0.013707);
v(-0.375955, -1.050633, 0.615238);
v(-0.329143, -1.211781, 0.389898);
v(-0.546268, -1.084203, 0.4008);
v(-0.502924, -1.188227, 0.275627);
v(-0.547677, 0.304059, -0.005411);
v(-0.12176, -1.402638, 0.053696);
v(-0.771979, -0.586892, -0.638183);
v(-0.723071, -0.633415, -0.753028);
v(-0.631006, -0.894705, -0.806819);
v(-0.507299, -0.959889, -0.963486);
v(-0.389242, -1.299946, 0.150669);
v(-0.108141, -1.334682, 0.234141);
v(-0.261005, -1.375204, -0.696387);
v(-0.123461, -1.419706, -0.690069);
v(0.339322, -1.208775, -1.074742);
v(0.31671, -1.176637, -1.058839);
v(-0.155172, -1.030652, 0.716099);
v(-0.161675, -0.607451, 1.129342);
v(-0.451208, -1.06161, 0.540855);
v(-0.131968, 1.246115, 3.399005);
v(-0.282877, 1.251968, 3.204626);
v(-0.154402, 1.326713, 3.212447);
v(0.203714, -1.343205, -1.37322);
v(-1.254703, 0.176454, -1.12596);
v(-1.484521, 0.379013, -1.339728);
v(-2.124825, 0.986901, -1.101418);
v(-1.543451, 0.493175, -0.952357);
v(0.724487, 0.242103, -0.085012);
v(-0.992611, -0.031519, -1.201338);
v(1.179195, -1.991863, -1.637857);
v(-1.43935, 0.3506, -1.06656);
v(-0.176556, -1.304215, -1.402711);
v(0.273951, -1.391262, -1.367719);
v(0.436172, -1.287802, -1.09);
v(-1.104261, -0.478608, 0.678322);
v(-1.132248, -0.520599, 0.689209);
v(-1.104987, -0.534961, 0.679344);
v(-1.135702, -0.457761, 0.73076);
v(-1.09732, -0.451643, 0.711166);
v(-1.158169, -0.647277, 0.796528);
v(-1.176218, -0.551869, 0.804082);
v(-1.095571, -0.434055, 0.750507);
v(-1.083648, -0.424645, 0.853854);
v(-1.136862, -0.453952, 0.896908);
v(-1.096292, -0.705844, 0.801549);
v(-1.182196, -0.580075, 1.007713);
v(-1.072732, -0.434062, 0.936245);
v(-1.098135, -0.497901, 1.142124);
v(-1.181206, -0.721096, 1.016937);
v(-1.089011, -0.766375, 0.875488);
v(-0.234983, -1.166412, -1.397764);
v(-1.004734, -0.741687, 1.570536);
v(-1.063874, -0.637783, 1.424395);
v(-1.011924, -0.688813, 1.507103);
v(-1.151626, -0.7661, 1.357681);
v(-1.119245, -0.684919, 1.398325);
v(-1.118308, -0.934301, 1.2883);
v(-1.150395, -0.858221, 1.320661);
v(-1.079571, -0.961634, 1.259715);
v(-1.04134, -0.826491, 1.639351);
v(-1.000015, -0.799918, 1.628094);
v(-1.101853, -0.941202, 1.530144);
v(-1.053096, -1.013484, 1.499383);
v(-1.018548, -1.022982, 1.521337);
v(-1.028576, -1.013499, 1.435585);
v(-0.996527, -0.857439, 1.669959);
v(-0.995074, -0.9125, 1.69269);
v(-1.074018, -0.901472, 1.624857);
v(-1.030088, -0.996501, 1.650021);
v(-1.016318, -0.930515, 1.691592);
v(-1.002349, -1.002832, 1.650123);
v(-0.995581, -0.96875, 1.694231);
v(-1.009475, -1.019655, 1.593421);
v(-1.058131, -0.932467, 1.170754);
v(-1.150427, -0.540271, 1.098349);
v(-1.143193, -0.815779, 1.011267);
v(-1.06961, -0.882111, 1.063588);
v(-1.031552, -0.565508, 1.308656);
v(-1.043031, -0.515153, 1.201492);
v(-1.106754, -0.590824, 0.702754);
v(-1.056463, -0.468207, 1.078831);
v(-1.084342, -0.800503, 0.922188);
v(-1.016821, -0.647116, 1.450056);
v(-1.0447, -0.979412, 1.293413);
v(-1.019412, -0.628648, 1.424246);
v(-1.048116, -0.97077, 1.262972);
v(-1.08175, -0.818971, 0.947998);
v(-1.053047, -0.476849, 1.109273);
v(-0.135395, -0.722332, -1.269223);
v(-0.259292, -0.822959, -1.247416);
v(-1.114223, -0.792707, 0.920365);
v(0.272728, -1.234351, -1.041522);
v(-0.742887, -0.998991, 0.13329);
v(-0.704313, -0.953809, 0.333292);
v(-0.245214, -0.560389, 1.133921);
v(-0.40358, -0.712669, 0.93354);
v(-0.538455, -0.817057, 0.732258);
v(-0.120496, -0.831659, 0.94364);
v(-0.140237, -0.714831, 1.038933);
v(-0.090505, -0.381736, 1.325263);
v(-0.255962, -0.901482, 0.832066);
v(-0.641906, -0.888524, 0.533206);
v(-0.75843, -0.032346, 0.002009);
v(-0.823626, -0.208277, -0.143108);
v(-0.845308, -0.380863, -0.261093);
v(0.680678, 0.195702, 0.015804);
v(-0.587316, 0.206008, 0.169704);
v(-0.518214, 0.254124, 0.14969);
v(-0.349493, 0.318012, 0.023346);
v(-0.178152, 0.287448, -0.4177);
v(-0.145851, 0.2155, -0.614128);
v(-0.863826, -0.731841, -0.291152);
v(-0.820035, -0.778682, -0.436779);
v(-0.126189, 0.093035, -0.79609);
v(-0.119417, -0.073534, -0.917787);
v(-0.263753, 0.324366, -0.140467);
v(-0.211068, 0.312719, -0.27947);
v(-0.643935, 0.141133, 0.152896);
v(-0.863643, -0.780682, -0.197716);
v(-0.829076, -0.839068, -0.366433);
v(0, 1.354173, 3.214158);
v(0, 0.872425, 3.714234);
v(0, -0.468723, 1.271612);
v(0, -0.29411, 1.417028);
v(0, 0.063679, -0.822175);
v(0, -1.430751, -0.690458);
v(0, -0.175579, -0.990781);
v(0, 0.197865, -0.670407);
v(0, 1.270211, 3.399992);
v(-0.2442, -1.236163, -1.017966);
v(0.709405, -1.483019, -1.248954);
v(0, -0.575772, 1.181116);
v(0, -1.477056, -0.537706);
v(0, -0.567314, -1.193208);
v(0, -1.356348, -0.866743);
v(0, -1.489449, -0.419147);
v(0, -1.173329, 0.536876);
v(0, -1.402333, 0.066646);
v(0, -1.322493, 0.266646);
v(0, -1.473924, -0.211372);
v(0, 0.76688, 3.733641);
v(-0.124131, 0.796747, 3.665851);
v(0, 0.781954, 3.733871);
v(-0.23196, -0.838472, 0.904508);
v(-0.19066, -0.777476, 0.971936);
v(0.120496, -0.831659, 0.94364);
v(0.140237, -0.714831, 1.038933);
v(0.23196, -0.838472, 0.904508);
v(0.19066, -0.777476, 0.971936);
v(0, -0.638232, 1.12605);
v(0, -0.723002, 1.050025);
v(0, -0.862257, 0.926139);
v(0, -0.948811, 0.83146);
v(0.255962, -0.901482, 0.832066);
v(0.40358, -0.712669, 0.93354);
v(0.161675, -0.607451, 1.129342);
v(0.284567, 1.087155, 3.471694);
v(0.271131, 1.072901, 3.497926);
v(0.181153, 1.022861, 3.593344);
v(0.35238, 1.07137, 3.322805);
v(0.848679, -1.589194, -1.179063);
v(0.332027, 1.077936, 3.393457);
v(0.263765, 0.893572, 3.563177);
v(0.257383, 0.970864, 3.553974);
v(0.36628, 0.967616, 3.345458);
v(0.366814, 0.941222, 3.343815);
v(2.986225, 1.507676, -1.643153);
v(-2.986225, 1.507676, -1.643153);
v(0.34784, 1.048287, 3.372696);
v(0.30747, 1.096933, 3.428099);
v(0.26283, 1.03365, 3.526517);
v(0.273713, 0.858292, 3.54597);
v(-0.284567, 1.087155, 3.471694);
v(-0.271131, 1.072901, 3.497926);
v(-0.181153, 1.022861, 3.593344);
v(-0.35238, 1.07137, 3.322805);
v(-0.332027, 1.077936, 3.393457);
v(-0.263765, 0.893572, 3.563177);
v(-0.257383, 0.970864, 3.553974);
v(-0.36628, 0.967616, 3.345458);
v(-0.366814, 0.941222, 3.343815);
v(-0.34784, 1.048287, 3.372696);
v(-0.30747, 1.096933, 3.428099);
v(-0.26283, 1.03365, 3.526517);
v(-0.273713, 0.858292, 3.54597);
v(0, 0.971928, 3.665738);
v(-0.163451, 1.060346, 3.572802);
v(-0.192929, 1.102495, 3.522398);
v(-0.250055, 1.176705, 3.395227);
v(-0.366058, 1.143878, 3.197206);
v(-0.400967, 0.991577, 3.204843);
v(-0.209067, 0.829329, 3.607319);
v(-0.169869, 0.886039, 3.634872);
v(-0.105995, 0.963283, 3.649982);
v(0.77077, -0.99754, -0.310849);
v(0.762858, -1.025169, -0.195877);
v(-0.77077, -0.99754, -0.310849);
v(-0.762858, -1.025169, -0.195877);
v(-0.779434, -0.960931, -0.361957);
v(-0.615728, -1.242279, -0.26905);
v(-0.613181, -1.2295, -0.093377);
v(-0.760132, -1.021961, -0.06655);
v(-0.272728, -1.234351, -1.041522);
v(-0.293151, -1.168501, -1.148953);
v(-0.31671, -1.176637, -1.058839);
v(-0.339322, -1.208775, -1.074742);
v(-0.19143, -1.344387, -1.331735);
v(-0.27437, -1.296863, -1.144629);
v(-0.215467, -1.284723, -1.138191);
v(-0.1568, -1.322916, -1.263344);
v(-0.170999, -1.329924, -1.380518);
v(-0.146602, -1.329778, -1.416569);
v(-0.203714, -1.343205, -1.37322);
v(-0.336605, -1.442637, -1.436498);
v(-0.402323, -1.474077, -1.482023);
v(-0.214062, -1.324184, -1.381884);
v(-0.294122, -1.372318, -1.409295);
v(-0.314629, -1.351906, -1.372776);
v(-0.22818, -1.266142, -1.320951);
v(-0.292065, -1.213031, -1.174691);
v(-0.273951, -1.391262, -1.367719);
v(-0.436172, -1.287802, -1.09);
v(-0.848679, -1.589194, -1.179063);
v(-1.420677, -1.921693, -1.268554);
v(-0.710095, -1.740808, -1.629296);
v(-1.064516, -2.035728, -1.85552);
v(-1.601052, -2.013159, -1.313756);
v(-0.807063, -1.533164, -1.164528);
v(-1.458148, -1.913141, -1.305433);
v(-0.709405, -1.483019, -1.248954);
v(-1.443683, -1.906648, -1.317494);
v(-0.922657, -1.798041, -1.6569);
v(-0.645945, -1.594937, -1.542571);
v(-1.085114, -1.976643, -1.867451);
v(-1.235271, -1.966687, -1.671564);
v(-1.029001, -1.778183, -1.502959);
v(-1.202812, -1.934554, -1.570781);
v(-0.893962, -1.72093, -1.530863);
v(-0.394799, -1.330163, -1.265692);
v(-1.234536, -2.144927, -1.994576);
v(-1.277257, -1.898375, -1.409215);
v(-1.189974, -1.837675, -1.405002);
v(-1.292473, -1.924025, -1.518666);
v(-0.920952, -1.58742, -1.208451);
v(-0.418665, -1.274574, -1.118778);
v(-1.489491, -1.964425, -1.345915);
v(-0.996937, -1.684594, -1.339646);
v(-1.179195, -1.991863, -1.637857);
v(-1.094587, -1.89011, -1.53161);
v(-0.96332, -1.801778, -1.469722);
v(-0.57054, -1.525195, -1.308143);
v(-0.660059, -1.696666, -1.631475);
v(-1.233434, -1.953622, -1.49653);
v(-0.893001, -1.666919, -1.265437);
v(-1.187047, -1.857061, -1.394475);
v(-1.041996, -1.911131, -1.667446);
v(-0.82881, -1.780049, -1.581843);
f2(150, 151, 446);
f2(150, 446, 155);
f2(149, 150, 155);
f2(148, 149, 155);
f2(148, 155, 154);
f2(147, 148, 154);
f2(147, 154, 153);
f2(146, 147, 153);
f2(145, 146, 153);
f2(145, 153, 152);
f2(144, 145, 152);
f2(143, 144, 152);
f2(151, 111, 446);
f2(446, 111, 139);
f2(111, 40, 139);
f2(40, 116, 139);
f2(139, 116, 140);
f2(116, 115, 140);
f2(140, 115, 141);
f2(115, 109, 141);
f2(109, 117, 141);
f2(141, 117, 152);
f2(117, 105, 152);
f2(105, 143, 152);
f2(141, 152, 142);
f2(152, 153, 142);
f2(153, 154, 142);
f2(154, 155, 142);
f2(155, 446, 142);
f2(446, 139, 142);
f2(139, 140, 142);
f2(140, 141, 142);
f2(0x0303, 769, 765);
f2(0x0303, 765, 766);
f2(765, 778, 766);
f2(766, 778, 772);
f2(767, 781, 774);
f2(772, 778, 762);
f2(762, 778, 763);
f2(778, 777, 763);
f2(777, 776, 763);
f2(763, 776, 773);
f2(773, 776, 764);
f2(773, 764, 0x0300);
f2(764, 782, 0x0300);
f2(0x0300, 782, 767);
f2(782, 781, 767);
f2(769, 770, 780);
f2(769, 780, 779);
f2(765, 769, 779);
f2(764, 775, 783);
f2(776, 775, 764);
f2(779, 778, 765);
f2(764, 783, 782);
f2(754, 758, 749);
f2(749, 758, 751);
f2(264, 749, 751);
f2(264, 751, 759);
f2(0xFF, 752, 761);
f2(264, 759, 746);
f2(264, 746, 747);
f2(259, 264, 747);
f2(0x0101, 259, 747);
f2(0x0101, 747, 760);
f2(0x0101, 760, 748);
f2(748, 760, 753);
f2(8, 748, 753);
f2(8, 753, 752);
f2(0xFF, 8, 752);
f2(755, 754, 260);
f2(260, 754, 261);
f2(754, 749, 261);
f2(775, 748, 7);
f2(775, 0x0101, 748);
f2(264, 261, 749);
f2(7, 748, 8);
f2(737, 744, 743);
f2(744, 737, 738);
f2(745, 744, 738);
f2(736, 745, 738);
f2(739, 745, 736);
f2(741, 740, 735);
f2(685, 733, 690);
f2(733, 685, 734);
f2(685, 607, 734);
f2(607, 688, 734);
f2(732, 0x0100, 730);
f2(731, 732, 730);
f2(732, 8, 0x0100);
f2(782, 732, 731);
f2(415, 742, 726);
f2(742, 2, 726);
f2(601, 415, 728);
f2(415, 726, 728);
f2(728, 726, 2);
f2(2, 242, 728);
f2(727, 601, 728);
f2(242, 727, 728);
f2(595, 601, 727);
f2(727, 242, 235);
f2(714, 408, 407);
f2(717, 714, 407);
f2(399, 398, 131);
f2(399, 131, 132);
f2(413, 197, 390);
f2(180, 390, 197);
f2(197, 413, 406);
f2(197, 406, 198);
f2(406, 132, 198);
f2(197, 198, 238);
f2(130, 198, 132);
f2(130, 132, 131);
f2(134, 131, 398);
f2(375, 134, 397);
f2(695, 248, 375);
f2(375, 396, 695);
f2(411, 225, 695);
f2(401, 234, 225);
f2(234, 206, 205);
f2(234, 402, 206);
f2(206, 409, 386);
f2(386, 409, 410);
f2(204, 386, 410);
f2(204, 403, 384);
f2(384, 403, 404);
f2(187, 384, 404);
f2(187, 407, 190);
f2(189, 190, 407);
f2(201, 408, 716);
f2(408, 201, 189);
f2(189, 407, 408);
f2(714, 716, 408);
f2(187, 404, 407);
f2(204, 410, 403);
f2(206, 402, 409);
f2(234, 401, 402);
f2(225, 400, 401);
f2(225, 411, 400);
f2(695, 396, 411);
f2(375, 397, 396);
f2(134, 398, 397);
f2(132, 406, 399);
f2(413, 405, 406);
f2(413, 390, 412);
f2(2, 742, 252);
f2(742, 743, 252);
f2(241, 390, 180);
f2(389, 172, 173);
f2(388, 173, 194);
f2(391, 194, 232);
f2(395, 232, 254);
f2(230, 393, 254);
f2(230, 743, 393);
f2(745, 394, 392);
f2(745, 712, 394);
f2(232, 395, 391);
f2(173, 388, 389);
f2(388, 194, 391);
f2(254, 393, 395);
f2(743, 744, 393);
f2(744, 745, 392);
f2(394, 712, 713);
f2(712, 745, 721);
f2(745, 739, 721);
f2(335, 326, 334);
f2(334, 326, 328);
f2(324, 357, 382);
f2(366, 382, 357);
f2(333, 361, 339);
f2(361, 333, 365);
f2(328, 360, 327);
f2(360, 364, 327);
f2(310, 309, 311);
f2(312, 309, 310);
f2(312, 316, 313);
f2(312, 313, 309);
f2(310, 355, 314);
f2(310, 311, 355);
f2(315, 310, 314);
f2(312, 310, 315);
f2(317, 316, 318);
f2(316, 312, 318);
f2(382, 355, 319);
f2(314, 355, 382);
f2(320, 312, 315);
f2(318, 312, 320);
f2(317, 318, 322);
f2(321, 317, 322);
f2(315, 314, 323);
f2(382, 319, 324);
f2(351, 314, 382);
f2(327, 330, 334);
f2(328, 327, 334);
f2(342, 329, 336);
f2(342, 330, 329);
f2(334, 330, 342);
f2(337, 333, 339);
f2(223, 333, 337);
f2(336, 223, 337);
f2(337, 339, 338);
f2(340, 334, 341);
f2(341, 334, 344);
f2(335, 334, 340);
f2(344, 342, 343);
f2(334, 342, 344);
f2(342, 336, 343);
f2(336, 337, 343);
f2(345, 343, 348);
f2(348, 337, 338);
f2(343, 337, 348);
f2(346, 343, 345);
f2(346, 344, 343);
f2(341, 344, 346);
f2(223, 351, 333);
f2(333, 349, 365);
f2(354, 367, 322);
f2(322, 318, 350);
f2(318, 320, 350);
f2(323, 314, 351);
f2(320, 315, 323);
f2(336, 329, 332);
f2(336, 332, 223);
f2(327, 322, 330);
f2(382, 366, 352);
f2(333, 382, 352);
f2(351, 382, 333);
f2(323, 351, 223);
f2(329, 323, 332);
f2(329, 320, 323);
f2(330, 320, 329);
f2(330, 350, 320);
f2(322, 350, 330);
f2(353, 354, 322);
f2(333, 352, 349);
f2(332, 323, 223);
f2(353, 322, 327);
f2(364, 353, 327);
f2(322, 367, 356);
f2(356, 321, 322);
f2(711, 775, 7);
f2(264, 258, 262);
f2(718, 263, 258);
f2(263, 718, 710);
f2(262, 258, 263);
f2(261, 264, 262);
f2(732, 711, 7);
f2(7, 8, 732);
f2(8, 0xFF, 0x0100);
f2(743, 230, 252);
f2(252, 230, 2);
f2(380, 378, 49);
f2(380, 379, 378);
f2(49, 378, 127);
f2(244, 715, 722);
f2(164, 244, 722);
f2(243, 244, 164);
f2(163, 243, 164);
f2(231, 174, 242);
f2(242, 174, 235);
f2(241, 165, 166);
f2(232, 194, 233);
f2(231, 233, 240);
f2(240, 233, 175);
f2(231, 240, 174);
f2(238, 161, 239);
f2(161, 124, 239);
f2(183, 238, 239);
f2(198, 237, 238);
f2(236, 237, 198);
f2(237, 161, 238);
f2(201, 716, 200);
f2(205, 386, 184);
f2(184, 386, 204);
f2(374, 387, 434);
f2(374, 434, 440);
f2(133, 374, 440);
f2(133, 440, 414);
f2(174, 170, 235);
f2(230, 254, 231);
f2(254, 233, 231);
f2(254, 232, 233);
f2(2, 230, 231);
f2(2, 231, 242);
f2(239, 373, 183);
f2(214, 373, 239);
f2(225, 157, 695);
f2(157, 617, 695);
f2(234, 157, 225);
f2(217, 137, 136);
f2(218, 723, 331);
f2(723, 218, 219);
f2(218, 331, 138);
f2(216, 218, 138);
f2(119, 218, 216);
f2(219, 218, 119);
f2(216, 138, 137);
f2(215, 119, 216);
f2(215, 216, 217);
f2(216, 137, 217);
f2(239, 213, 214);
f2(373, 214, 135);
f2(239, 124, 213);
f2(214, 136, 135);
f2(213, 215, 217);
f2(213, 217, 214);
f2(125, 215, 213);
f2(214, 217, 136);
f2(124, 125, 213);
f2(133, 414, 195);
f2(134, 374, 133);
f2(386, 205, 206);
f2(184, 204, 188);
f2(188, 204, 384);
f2(38, 203, 199);
f2(192, 199, 203);
f2(37, 199, 121);
f2(37, 38, 199);
f2(422, 428, 202);
f2(422, 202, 123);
f2(202, 428, 34);
f2(202, 34, 126);
f2(202, 126, 123);
f2(160, 422, 159);
f2(416, 422, 160);
f2(422, 123, 159);
f2(191, 416, 160);
f2(200, 716, 723);
f2(120, 200, 122);
f2(122, 219, 119);
f2(192, 201, 120);
f2(192, 120, 199);
f2(120, 201, 200);
f2(130, 236, 198);
f2(195, 196, 129);
f2(134, 195, 129);
f2(134, 133, 195);
f2(189, 201, 192);
f2(193, 189, 192);
f2(195, 414, 196);
f2(196, 414, 191);
f2(196, 191, 236);
f2(186, 187, 190);
f2(377, 186, 190);
f2(377, 190, 189);
f2(377, 189, 193);
f2(378, 186, 377);
f2(188, 187, 186);
f2(188, 384, 187);
f2(185, 188, 379);
f2(185, 184, 188);
f2(183, 373, 181);
f2(182, 181, 179);
f2(182, 183, 181);
f2(238, 182, 197);
f2(238, 183, 182);
f2(197, 182, 180);
f2(241, 179, 165);
f2(241, 180, 179);
f2(180, 182, 179);
f2(175, 176, 178);
f2(240, 178, 170);
f2(175, 172, 176);
f2(176, 177, 178);
f2(178, 177, 162);
f2(241, 177, 176);
f2(241, 166, 177);
f2(175, 178, 240);
f2(174, 240, 170);
f2(233, 173, 175);
f2(233, 194, 173);
f2(173, 172, 175);
f2(172, 241, 176);
f2(729, 171, 725);
f2(178, 162, 171);
f2(171, 162, 725);
f2(235, 170, 729);
f2(170, 178, 171);
f2(170, 171, 729);
f2(167, 307, 168);
f2(167, 168, 243);
f2(181, 307, 167);
f2(181, 373, 307);
f2(168, 368, 169);
f2(368, 363, 169);
f2(244, 169, 715);
f2(243, 168, 244);
f2(168, 169, 244);
f2(168, 370, 368);
f2(179, 167, 165);
f2(179, 181, 167);
f2(167, 243, 163);
f2(166, 167, 163);
f2(166, 163, 177);
f2(166, 165, 167);
f2(177, 163, 162);
f2(162, 164, 722);
f2(162, 722, 725);
f2(163, 164, 162);
f2(159, 123, 161);
f2(123, 124, 161);
f2(160, 159, 237);
f2(236, 160, 237);
f2(236, 191, 160);
f2(159, 161, 237);
f2(60, 31, 385);
f2(31, 158, 385);
f2(31, 32, 158);
f2(158, 32, 157);
f2(193, 192, 203);
f2(156, 193, 39);
f2(39, 193, 203);
f2(440, 434, 269);
f2(434, 36, 269);
f2(36, 428, 422);
f2(414, 269, 191);
f2(414, 440, 269);
f2(269, 416, 191);
f2(617, 248, 695);
f2(617, 55, 248);
f2(55, 387, 248);
f2(248, 387, 374);
f2(157, 32, 617);
f2(205, 185, 385);
f2(234, 205, 158);
f2(205, 184, 185);
f2(205, 385, 158);
f2(234, 158, 157);
f2(60, 381, 380);
f2(381, 379, 380);
f2(60, 380, 49);
f2(60, 385, 381);
f2(385, 185, 381);
f2(185, 379, 381);
f2(60, 49, 51);
f2(379, 188, 186);
f2(379, 186, 378);
f2(127, 377, 193);
f2(378, 377, 127);
f2(127, 193, 156);
f2(375, 374, 134);
f2(248, 374, 375);
f2(131, 129, 130);
f2(134, 129, 131);
f2(129, 196, 130);
f2(130, 196, 236);
f2(49, 156, 39);
f2(49, 127, 156);
f2(50, 51, 49);
f2(124, 126, 125);
f2(123, 126, 124);
f2(126, 34, 125);
f2(121, 122, 119);
f2(120, 122, 121);
f2(121, 119, 125);
f2(125, 119, 215);
f2(34, 121, 125);
f2(37, 121, 34);
f2(199, 120, 121);
f2(66, 76, 86);
f2(22, 66, 86);
f2(22, 86, 85);
f2(21, 86, 76);
f2(86, 27, 85);
f2(21, 27, 86);
f2(61, 84, 83);
f2(82, 61, 83);
f2(79, 83, 84);
f2(81, 82, 79);
f2(82, 83, 79);
f2(81, 61, 82);
f2(78, 81, 80);
f2(80, 81, 79);
f2(79, 45, 75);
f2(44, 45, 79);
f2(75, 80, 79);
f2(78, 80, 74);
f2(79, 84, 44);
f2(76, 77, 21);
f2(77, 44, 21);
f2(78, 76, 66);
f2(78, 74, 76);
f2(75, 45, 77);
f2(76, 75, 77);
f2(74, 75, 76);
f2(80, 75, 74);
f2(73, 14, 72);
f2(14, 30, 72);
f2(70, 33, 52);
f2(64, 52, 43);
f2(73, 72, 33);
f2(70, 73, 33);
f2(15, 28, 54);
f2(56, 15, 54);
f2(59, 71, 58);
f2(71, 29, 58);
f2(28, 71, 59);
f2(54, 28, 59);
f2(64, 70, 52);
f2(25, 23, 15);
f2(14, 25, 15);
f2(15, 23, 28);
f2(30, 14, 15);
f2(68, 44, 84);
f2(69, 81, 78);
f2(46, 756, 69);
f2(67, 63, 46);
f2(63, 756, 46);
f2(68, 63, 20);
f2(67, 46, 25);
f2(67, 14, 19);
f2(20, 19, 47);
f2(21, 26, 42);
f2(24, 66, 48);
f2(66, 22, 48);
f2(27, 21, 42);
f2(85, 27, 65);
f2(26, 64, 42);
f2(26, 47, 64);
f2(29, 24, 41);
f2(24, 48, 41);
f2(41, 48, 11);
f2(47, 70, 64);
f2(47, 73, 70);
f2(47, 19, 73);
f2(63, 68, 62);
f2(62, 68, 61);
f2(61, 68, 84);
f2(63, 62, 81);
f2(62, 61, 81);
f2(69, 63, 81);
f2(756, 63, 69);
f2(52, 33, 60);
f2(52, 60, 51);
f2(59, 58, 434);
f2(54, 434, 387);
f2(54, 59, 434);
f2(46, 69, 23);
f2(23, 69, 24);
f2(58, 57, 36);
f2(57, 212, 36);
f2(58, 36, 434);
f2(55, 54, 387);
f2(56, 54, 55);
f2(617, 32, 55);
f2(32, 56, 55);
f2(32, 30, 56);
f2(30, 15, 56);
f2(43, 50, 53);
f2(43, 51, 50);
f2(52, 51, 43);
f2(50, 49, 39);
f2(24, 69, 66);
f2(20, 47, 44);
f2(44, 47, 26);
f2(69, 78, 66);
f2(45, 44, 77);
f2(68, 20, 44);
f2(42, 43, 53);
f2(42, 64, 43);
f2(41, 11, 212);
f2(29, 41, 57);
f2(57, 41, 212);
f2(58, 29, 57);
f2(53, 39, 38);
f2(35, 17, 37);
f2(17, 38, 37);
f2(53, 50, 39);
f2(39, 203, 38);
f2(35, 37, 34);
f2(17, 42, 53);
f2(17, 53, 38);
f2(16, 17, 35);
f2(12, 35, 34);
f2(212, 12, 36);
f2(12, 13, 35);
f2(12, 34, 428);
f2(36, 12, 428);
f2(212, 11, 12);
f2(11, 13, 12);
f2(33, 72, 60);
f2(72, 31, 60);
f2(72, 30, 32);
f2(72, 32, 31);
f2(23, 24, 29);
f2(71, 23, 29);
f2(28, 23, 71);
f2(20, 67, 19);
f2(21, 44, 26);
f2(25, 46, 23);
f2(14, 67, 25);
f2(22, 85, 18);
f2(48, 22, 18);
f2(85, 65, 18);
f2(65, 16, 18);
f2(27, 42, 17);
f2(65, 27, 17);
f2(63, 67, 20);
f2(19, 14, 73);
f2(11, 48, 18);
f2(16, 65, 17);
f2(11, 18, 13);
f2(18, 16, 13);
f2(16, 35, 13);
f2(416, 36, 422);
f2(36, 416, 269);
f2(704, 714, 703);
f2(714, 717, 703);
f2(694, 271, 506);
f2(506, 271, 507);
f2(572, 709, 788);
f2(788, 554, 572);
f2(709, 572, 702);
f2(702, 572, 573);
f2(507, 702, 573);
f2(573, 572, 598);
f2(573, 505, 507);
f2(507, 505, 506);
f2(506, 509, 694);
f2(509, 511, 693);
f2(522, 523, 511);
f2(692, 511, 523);
f2(589, 707, 523);
f2(594, 697, 589);
f2(581, 594, 580);
f2(698, 594, 581);
f2(705, 581, 519);
f2(705, 519, 706);
f2(519, 579, 706);
f2(699, 579, 517);
f2(699, 517, 700);
f2(517, 561, 700);
f2(703, 561, 564);
f2(564, 563, 703);
f2(704, 576, 716);
f2(576, 704, 563);
f2(703, 563, 704);
f2(716, 714, 704);
f2(700, 561, 703);
f2(706, 579, 699);
f2(698, 581, 705);
f2(697, 594, 698);
f2(696, 589, 697);
f2(707, 589, 696);
f2(692, 523, 707);
f2(693, 511, 692);
f2(694, 509, 693);
f2(702, 507, 271);
f2(701, 709, 702);
f2(788, 709, 708);
f2(742, 415, 606);
f2(690, 742, 606);
f2(788, 789, 554);
f2(790, 791, 547);
f2(547, 682, 568);
f2(568, 683, 592);
f2(592, 691, 608);
f2(686, 590, 608);
f2(690, 590, 686);
f2(607, 739, 688);
f2(689, 607, 684);
f2(712, 607, 689);
f2(691, 592, 683);
f2(682, 547, 791);
f2(568, 682, 683);
f2(686, 608, 691);
f2(685, 690, 686);
f2(607, 685, 684);
f2(712, 689, 713);
f2(607, 712, 721);
f2(739, 607, 721);
f2(740, 741, 687);
f2(641, 650, 649);
f2(641, 649, 643);
f2(671, 639, 680);
f2(680, 676, 671);
f2(673, 648, 654);
f2(648, 673, 675);
f2(672, 643, 642);
f2(674, 672, 642);
f2(624, 625, 626);
f2(624, 627, 625);
f2(631, 627, 628);
f2(628, 627, 624);
f2(669, 625, 629);
f2(626, 625, 669);
f2(625, 630, 629);
f2(625, 627, 630);
f2(631, 632, 633);
f2(627, 631, 633);
f2(669, 680, 634);
f2(669, 629, 680);
f2(627, 635, 630);
f2(627, 633, 635);
f2(633, 632, 637);
f2(632, 636, 637);
f2(629, 630, 638);
f2(634, 680, 639);
f2(629, 665, 680);
f2(645, 642, 649);
f2(642, 643, 649);
f2(644, 657, 651);
f2(645, 657, 644);
f2(645, 649, 657);
f2(648, 652, 654);
f2(648, 646, 652);
f2(646, 651, 652);
f2(654, 652, 653);
f2(649, 655, 656);
f2(649, 656, 659);
f2(649, 650, 655);
f2(657, 659, 658);
f2(657, 649, 659);
f2(651, 657, 658);
f2(652, 651, 658);
f2(658, 660, 662);
f2(652, 662, 653);
f2(652, 658, 662);
f2(658, 661, 660);
f2(659, 661, 658);
f2(659, 656, 661);
f2(665, 646, 648);
f2(663, 648, 675);
f2(677, 668, 637);
f2(633, 637, 664);
f2(635, 633, 664);
f2(629, 638, 665);
f2(630, 635, 638);
f2(644, 651, 647);
f2(647, 651, 646);
f2(637, 642, 645);
f2(676, 680, 666);
f2(680, 648, 666);
f2(680, 665, 648);
f2(665, 638, 646);
f2(638, 644, 647);
f2(635, 644, 638);
f2(635, 645, 644);
f2(664, 645, 635);
f2(664, 637, 645);
f2(668, 667, 637);
f2(666, 648, 663);
f2(638, 647, 646);
f2(637, 667, 642);
f2(667, 674, 642);
f2(677, 637, 670);
f2(636, 670, 637);
f2(775, 711, 783);
f2(609, 778, 610);
f2(611, 718, 609);
f2(718, 611, 710);
f2(609, 610, 611);
f2(778, 779, 610);
f2(711, 732, 783);
f2(782, 783, 732);
f2(781, 782, 731);
f2(590, 690, 606);
f2(590, 606, 415);
f2(513, 515, 454);
f2(0x0202, 515, 513);
f2(513, 454, 503);
f2(715, 603, 722);
f2(603, 539, 722);
f2(603, 602, 539);
f2(602, 538, 539);
f2(548, 591, 601);
f2(548, 601, 595);
f2(540, 789, 541);
f2(568, 592, 593);
f2(593, 591, 600);
f2(593, 600, 549);
f2(600, 591, 548);
f2(536, 598, 599);
f2(500, 536, 599);
f2(598, 557, 599);
f2(597, 573, 598);
f2(597, 596, 573);
f2(536, 597, 598);
f2(716, 576, 575);
f2(519, 580, 558);
f2(519, 558, 579);
f2(520, 510, 529);
f2(529, 510, 530);
f2(510, 508, 530);
f2(530, 508, 525);
f2(545, 548, 595);
f2(608, 590, 591);
f2(593, 608, 591);
f2(592, 608, 593);
f2(590, 415, 591);
f2(591, 415, 601);
f2(128, 599, 557);
f2(128, 583, 599);
f2(532, 589, 523);
f2(521, 532, 523);
f2(532, 594, 589);
f2(679, 586, 347);
f2(723, 587, 331);
f2(587, 723, 588);
f2(331, 587, 678);
f2(587, 585, 678);
f2(587, 495, 585);
f2(587, 588, 495);
f2(678, 585, 679);
f2(495, 584, 585);
f2(585, 584, 586);
f2(679, 585, 586);
f2(582, 599, 583);
f2(583, 128, 306);
f2(500, 599, 582);
f2(347, 583, 306);
f2(584, 582, 586);
f2(586, 582, 583);
f2(584, 501, 582);
f2(586, 583, 347);
f2(501, 500, 582);
f2(525, 508, 569);
f2(510, 509, 508);
f2(580, 519, 581);
f2(579, 558, 562);
f2(579, 562, 517);
f2(578, 443, 574);
f2(574, 566, 578);
f2(574, 442, 497);
f2(443, 442, 574);
f2(528, 527, 577);
f2(577, 527, 499);
f2(528, 577, 439);
f2(439, 577, 502);
f2(502, 577, 499);
f2(527, 535, 534);
f2(527, 526, 535);
f2(499, 527, 534);
f2(526, 565, 535);
f2(716, 575, 723);
f2(575, 496, 498);
f2(588, 498, 495);
f2(576, 566, 496);
f2(496, 566, 574);
f2(576, 496, 575);
f2(596, 505, 573);
f2(570, 569, 504);
f2(569, 509, 504);
f2(508, 509, 569);
f2(576, 563, 566);
f2(563, 567, 566);
f2(525, 569, 570);
f2(525, 570, 565);
f2(565, 570, 596);
f2(561, 560, 564);
f2(560, 0x0200, 564);
f2(564, 0x0200, 563);
f2(563, 0x0200, 567);
f2(560, 513, 0x0200);
f2(561, 562, 560);
f2(517, 562, 561);
f2(562, 559, 0x0202);
f2(558, 559, 562);
f2(128, 557, 555);
f2(555, 556, 553);
f2(557, 556, 555);
f2(556, 598, 572);
f2(557, 598, 556);
f2(556, 572, 554);
f2(553, 789, 540);
f2(554, 789, 553);
f2(556, 554, 553);
f2(550, 549, 552);
f2(552, 600, 545);
f2(790, 549, 550);
f2(551, 550, 552);
f2(551, 552, 537);
f2(551, 789, 550);
f2(541, 789, 551);
f2(552, 549, 600);
f2(600, 548, 545);
f2(547, 593, 549);
f2(568, 593, 547);
f2(790, 547, 549);
f2(789, 790, 550);
f2(546, 729, 725);
f2(537, 552, 546);
f2(537, 546, 725);
f2(545, 595, 729);
f2(552, 545, 546);
f2(546, 545, 729);
f2(494, 542, 543);
f2(543, 542, 602);
f2(494, 555, 542);
f2(128, 555, 494);
f2(362, 543, 544);
f2(363, 362, 544);
f2(544, 603, 715);
f2(543, 602, 603);
f2(544, 543, 603);
f2(542, 553, 540);
f2(555, 553, 542);
f2(602, 542, 538);
f2(542, 541, 538);
f2(538, 541, 551);
f2(540, 541, 542);
f2(538, 551, 537);
f2(539, 537, 722);
f2(722, 537, 725);
f2(539, 538, 537);
f2(499, 534, 536);
f2(500, 499, 536);
f2(534, 535, 597);
f2(535, 596, 597);
f2(565, 596, 535);
f2(536, 534, 597);
f2(436, 465, 518);
f2(533, 436, 518);
f2(437, 436, 533);
f2(437, 533, 532);
f2(566, 567, 578);
f2(567, 531, 444);
f2(567, 444, 578);
f2(529, 530, 524);
f2(441, 529, 524);
f2(528, 441, 527);
f2(524, 525, 565);
f2(530, 525, 524);
f2(526, 524, 565);
f2(522, 521, 523);
f2(460, 521, 522);
f2(520, 460, 522);
f2(520, 522, 510);
f2(437, 532, 521);
f2(559, 580, 518);
f2(580, 594, 533);
f2(558, 580, 559);
f2(518, 580, 533);
f2(533, 594, 532);
f2(516, 465, 515);
f2(0x0202, 516, 515);
f2(515, 465, 454);
f2(518, 465, 516);
f2(559, 518, 516);
f2(0x0202, 559, 516);
f2(454, 465, 456);
f2(562, 0x0202, 560);
f2(560, 0x0202, 513);
f2(0x0200, 503, 567);
f2(0x0200, 513, 503);
f2(567, 503, 531);
f2(510, 511, 509);
f2(510, 522, 511);
f2(504, 506, 505);
f2(504, 509, 506);
f2(570, 504, 505);
f2(570, 505, 596);
f2(531, 454, 444);
f2(503, 454, 531);
f2(456, 455, 454);
f2(502, 500, 501);
f2(502, 499, 500);
f2(439, 502, 501);
f2(498, 497, 495);
f2(498, 496, 497);
f2(495, 497, 501);
f2(495, 501, 584);
f2(497, 439, 501);
f2(497, 442, 439);
f2(496, 574, 497);
f2(481, 471, 491);
f2(471, 427, 491);
f2(491, 427, 490);
f2(491, 426, 481);
f2(432, 491, 490);
f2(432, 426, 491);
f2(489, 466, 488);
f2(466, 487, 488);
f2(488, 484, 489);
f2(487, 486, 484);
f2(488, 487, 484);
f2(466, 486, 487);
f2(486, 483, 485);
f2(486, 485, 484);
f2(450, 484, 480);
f2(450, 449, 484);
f2(485, 480, 484);
f2(485, 483, 479);
f2(489, 484, 449);
f2(482, 481, 426);
f2(449, 482, 426);
f2(481, 483, 471);
f2(479, 483, 481);
f2(450, 480, 482);
f2(480, 481, 482);
f2(480, 479, 481);
f2(480, 485, 479);
f2(419, 478, 477);
f2(435, 419, 477);
f2(438, 475, 457);
f2(457, 469, 448);
f2(477, 478, 438);
f2(478, 475, 438);
f2(433, 420, 459);
f2(420, 461, 459);
f2(476, 464, 463);
f2(616, 476, 463);
f2(476, 433, 464);
f2(433, 459, 464);
f2(475, 469, 457);
f2(615, 430, 420);
f2(430, 419, 420);
f2(615, 420, 433);
f2(419, 435, 420);
f2(449, 473, 489);
f2(486, 474, 483);
f2(757, 451, 474);
f2(468, 472, 451);
f2(757, 468, 451);
f2(468, 473, 425);
f2(451, 472, 430);
f2(419, 472, 424);
f2(424, 425, 452);
f2(431, 426, 447);
f2(471, 429, 453);
f2(427, 471, 453);
f2(426, 432, 447);
f2(432, 490, 470);
f2(469, 431, 447);
f2(452, 431, 469);
f2(429, 616, 620);
f2(453, 429, 620);
f2(453, 620, 613);
f2(475, 452, 469);
f2(478, 452, 475);
f2(424, 452, 478);
f2(473, 468, 467);
f2(473, 467, 466);
f2(473, 466, 489);
f2(467, 468, 486);
f2(466, 467, 486);
f2(468, 474, 486);
f2(468, 757, 474);
f2(438, 457, 465);
f2(465, 457, 456);
f2(463, 464, 529);
f2(529, 459, 520);
f2(464, 459, 529);
f2(474, 451, 615);
f2(474, 615, 429);
f2(462, 463, 441);
f2(445, 462, 441);
f2(441, 463, 529);
f2(459, 460, 520);
f2(459, 461, 460);
f2(437, 521, 460);
f2(461, 437, 460);
f2(435, 437, 461);
f2(420, 435, 461);
f2(455, 448, 458);
f2(456, 448, 455);
f2(456, 457, 448);
f2(454, 455, 444);
f2(474, 429, 471);
f2(452, 425, 449);
f2(452, 449, 431);
f2(483, 474, 471);
f2(449, 450, 482);
f2(425, 473, 449);
f2(448, 447, 458);
f2(469, 447, 448);
f2(613, 620, 445);
f2(620, 616, 462);
f2(620, 462, 445);
f2(616, 463, 462);
f2(444, 458, 443);
f2(614, 618, 442);
f2(443, 614, 442);
f2(455, 458, 444);
f2(578, 444, 443);
f2(442, 618, 439);
f2(447, 614, 458);
f2(458, 614, 443);
f2(614, 421, 618);
f2(618, 417, 439);
f2(417, 445, 441);
f2(418, 417, 618);
f2(439, 417, 528);
f2(417, 441, 528);
f2(613, 445, 417);
f2(418, 613, 417);
f2(477, 438, 465);
f2(436, 477, 465);
f2(435, 477, 437);
f2(437, 477, 436);
f2(429, 615, 616);
f2(615, 476, 616);
f2(615, 433, 476);
f2(472, 425, 424);
f2(449, 426, 431);
f2(451, 430, 615);
f2(472, 419, 430);
f2(490, 427, 423);
f2(427, 453, 423);
f2(470, 490, 423);
f2(421, 470, 423);
f2(447, 432, 614);
f2(432, 470, 614);
f2(472, 468, 425);
f2(419, 424, 478);
f2(453, 613, 423);
f2(470, 421, 614);
f2(423, 613, 418);
f2(421, 423, 418);
f2(618, 421, 418);
f2(441, 526, 527);
f2(526, 441, 524);
f2(715, 169, 724);
f2(544, 715, 724);
f2(363, 544, 724);
f2(169, 363, 724);
f2(729, 595, 727);
f2(235, 729, 727);
f2(172, 389, 785);
f2(241, 172, 785);
f2(784, 241, 785);
f2(241, 784, 390);
f2(791, 790, 787);
f2(790, 789, 787);
f2(789, 786, 787);
f2(786, 789, 788);
f2(128, 285, 793);
f2(793, 285, 794);
f2(795, 794, 359);
f2(798, 799, 796);
f2(797, 798, 796);
f2(799, 149, 796);
f2(149, 800, 796);
f2(801, 800, 149);
f2(799, 358, 150);
f2(149, 799, 150);
f2(796, 802, 810);
f2(810, 802, 803);
f2(805, 804, 803);
f2(802, 805, 803);
f2(805, 806, 804);
f2(808, 809, 828);
f2(808, 828, 807);
f2(805, 808, 806);
f2(808, 807, 806);
f2(809, 834, 828);
f2(809, 795, 834);
f2(828, 834, 819);
f2(797, 796, 376);
f2(796, 810, 376);
f2(369, 792, 376);
f2(792, 797, 376);
f2(792, 798, 797);
f2(798, 719, 799);
f2(792, 719, 798);
f2(719, 362, 799);
f2(795, 359, 811);
f2(795, 811, 834);
f2(362, 358, 799);
f2(358, 363, 325);
f2(362, 363, 358);
f2(679, 347, 305);
f2(305, 347, 308);
f2(812, 376, 843);
f2(369, 376, 812);
f2(812, 843, 227);
f2(813, 812, 227);
f2(846, 814, 815);
f2(818, 833, 816);
f2(833, 817, 816);
f2(817, 813, 816);
f2(819, 833, 820);
f2(820, 833, 818);
f2(836, 819, 820);
f2(807, 822, 823);
f2(807, 823, 806);
f2(828, 822, 807);
f2(806, 823, 304);
f2(822, 821, 823);
f2(825, 826, 824);
f2(821, 822, 827);
f2(822, 819, 827);
f2(828, 819, 822);
f2(806, 304, 804);
f2(804, 304, 829);
f2(825, 831, 832);
f2(826, 825, 292);
f2(827, 836, 825);
f2(827, 819, 836);
f2(834, 811, 833);
f2(833, 811, 817);
f2(834, 833, 819);
f2(831, 820, 835);
f2(831, 835, 830);
f2(831, 836, 820);
f2(825, 836, 831);
f2(838, 839, 837);
f2(814, 846, 840);
f2(840, 810, 814);
f2(803, 841, 814);
f2(803, 804, 841);
f2(814, 841, 815);
f2(841, 3, 815);
f2(841, 829, 3);
f2(841, 804, 829);
f2(810, 803, 814);
f2(844, 839, 842);
f2(842, 839, 838);
f2(838, 826, 842);
f2(843, 840, 839);
f2(376, 840, 843);
f2(813, 817, 812);
f2(843, 844, 227);
f2(843, 839, 844);
f2(839, 845, 837);
f2(840, 846, 839);
f2(839, 846, 845);
f2(845, 846, 815);
f2(827, 825, 824);
f2(0, 827, 824);
f2(827, 0, 821);
f2(821, 0, 823);
f2(823, 1, 304);
f2(815, 3, 5);
f2(5, 3, 829);
f2(823, 0, 1);
f2(1, 0, 4);
f2(304, 1, 829);
f2(1, 4, 829);
f2(4, 5, 829);
f2(845, 815, 4);
f2(4, 815, 5);
f2(0, 845, 4);
f2(820, 818, 816);
f2(813, 6, 816);
f2(813, 227, 6);
f2(820, 816, 835);
f2(830, 835, 245);
f2(245, 835, 816);
f2(227, 844, 245);
f2(844, 830, 245);
f2(227, 245, 6);
f2(6, 245, 816);
f2(0, 9, 10);
f2(0, 824, 9);
f2(845, 0, 10);
f2(845, 10, 274);
f2(274, 10, 9);
f2(837, 845, 274);
f2(824, 280, 9);
f2(824, 826, 280);
f2(826, 838, 286);
f2(280, 826, 286);
f2(838, 837, 286);
f2(286, 837, 274);
f2(280, 286, 9);
f2(286, 274, 9);
f2(842, 292, 97);
f2(842, 826, 292);
f2(97, 292, 91);
f2(825, 91, 292);
f2(825, 832, 91);
f2(831, 830, 103);
f2(832, 831, 103);
f2(91, 832, 103);
f2(830, 844, 103);
f2(103, 844, 301);
f2(844, 842, 301);
f2(301, 842, 97);
f2(103, 301, 91);
f2(91, 301, 97);
f2(143, 303, 144);
f2(303, 305, 144);
f2(305, 145, 144);
f2(305, 308, 145);
f2(145, 308, 146);
f2(308, 640, 146);
f2(146, 640, 147);
f2(640, 793, 383);
f2(640, 383, 147);
f2(150, 358, 151);
f2(358, 325, 151);
f2(143, 331, 303);
f2(331, 678, 303);
f2(678, 679, 303);
f2(303, 679, 305);
f2(308, 306, 640);
f2(347, 306, 308);
f2(128, 793, 640);
f2(306, 128, 640);
f2(359, 792, 811);
f2(811, 792, 369);
f2(811, 369, 817);
f2(817, 369, 812);
f2(376, 810, 840);
f2(801, 149, 148);
f2(809, 794, 795);
f2(793, 794, 809);
f2(148, 621, 801);
f2(383, 621, 148);
f2(147, 383, 148);
f2(383, 808, 805);
f2(383, 805, 621);
f2(383, 793, 808);
f2(793, 809, 808);
f2(801, 621, 800);
f2(621, 805, 800);
f2(796, 800, 802);
f2(800, 805, 802);
f2(794, 285, 359);
f2(359, 719, 792);
f2(371, 373, 493);
f2(371, 493, 605);
f2(605, 604, 300);
f2(209, 208, 571);
f2(208, 207, 571);
f2(40, 209, 571);
f2(210, 40, 571);
f2(210, 211, 40);
f2(112, 209, 111);
f2(209, 40, 111);
f2(612, 571, 622);
f2(612, 622, 220);
f2(221, 222, 220);
f2(222, 612, 220);
f2(224, 222, 221);
f2(229, 228, 275);
f2(275, 228, 226);
f2(228, 222, 224);
f2(226, 228, 224);
f2(282, 229, 275);
f2(604, 229, 282);
f2(282, 275, 720);
f2(571, 207, 114);
f2(622, 571, 114);
f2(681, 113, 114);
f2(207, 681, 114);
f2(208, 681, 207);
f2(370, 208, 209);
f2(370, 681, 208);
f2(368, 370, 209);
f2(300, 604, 623);
f2(623, 604, 282);
f2(112, 368, 209);
f2(363, 112, 325);
f2(363, 368, 112);
f2(136, 107, 108);
f2(114, 750, 293);
f2(114, 113, 750);
f2(293, 750, 93);
f2(750, 246, 93);
f2(247, 296, 249);
f2(281, 253, 250);
f2(251, 281, 250);
f2(246, 251, 250);
f2(281, 720, 492);
f2(281, 492, 253);
f2(720, 284, 492);
f2(266, 226, 267);
f2(267, 226, 224);
f2(266, 275, 226);
f2(267, 224, 88);
f2(265, 266, 267);
f2(272, 270, 268);
f2(266, 265, 273);
f2(720, 266, 273);
f2(720, 275, 266);
f2(88, 224, 221);
f2(88, 221, 276);
f2(278, 270, 279);
f2(270, 272, 100);
f2(284, 273, 270);
f2(720, 273, 284);
f2(623, 282, 281);
f2(623, 281, 251);
f2(281, 282, 720);
f2(492, 278, 283);
f2(283, 278, 277);
f2(284, 278, 492);
f2(284, 270, 278);
f2(288, 287, 619);
f2(296, 247, 289);
f2(622, 289, 247);
f2(290, 220, 247);
f2(221, 220, 290);
f2(290, 247, 249);
f2(89, 290, 249);
f2(276, 290, 89);
f2(221, 290, 276);
f2(220, 622, 247);
f2(288, 294, 291);
f2(288, 291, 287);
f2(272, 287, 291);
f2(289, 293, 288);
f2(289, 114, 293);
f2(251, 246, 750);
f2(294, 293, 93);
f2(288, 293, 294);
f2(295, 288, 619);
f2(296, 289, 288);
f2(296, 288, 295);
f2(296, 295, 249);
f2(270, 273, 268);
f2(273, 297, 268);
f2(297, 273, 265);
f2(297, 265, 267);
f2(87, 267, 88);
f2(89, 249, 298);
f2(89, 298, 276);
f2(297, 267, 87);
f2(297, 87, 90);
f2(87, 88, 276);
f2(90, 87, 276);
f2(298, 90, 276);
f2(249, 295, 90);
f2(249, 90, 298);
f2(295, 297, 90);
f2(253, 492, 250);
f2(92, 246, 250);
f2(93, 246, 92);
f2(250, 492, 283);
f2(283, 277, 94);
f2(283, 94, 250);
f2(294, 93, 94);
f2(277, 294, 94);
f2(94, 93, 92);
f2(94, 92, 250);
f2(95, 297, 96);
f2(268, 297, 95);
f2(297, 295, 96);
f2(96, 295, 299);
f2(96, 299, 95);
f2(295, 619, 299);
f2(98, 268, 95);
f2(272, 268, 98);
f2(287, 272, 99);
f2(272, 98, 99);
f2(619, 287, 99);
f2(619, 99, 299);
f2(99, 98, 95);
f2(299, 99, 95);
f2(100, 291, 102);
f2(272, 291, 100);
f2(100, 102, 101);
f2(101, 270, 100);
f2(279, 270, 101);
f2(277, 278, 302);
f2(278, 279, 302);
f2(279, 101, 302);
f2(294, 277, 302);
f2(294, 302, 104);
f2(291, 294, 104);
f2(291, 104, 102);
f2(104, 302, 101);
f2(104, 101, 102);
f2(106, 143, 105);
f2(107, 106, 105);
f2(117, 107, 105);
f2(108, 107, 117);
f2(108, 117, 109);
f2(110, 108, 109);
f2(110, 109, 115);
f2(493, 110, 118);
f2(118, 110, 115);
f2(112, 111, 151);
f2(325, 112, 151);
f2(331, 143, 106);
f2(138, 331, 106);
f2(136, 137, 107);
f2(137, 138, 106);
f2(137, 106, 107);
f2(135, 108, 110);
f2(135, 136, 108);
f2(493, 373, 110);
f2(373, 135, 110);
f2(681, 300, 623);
f2(681, 623, 113);
f2(113, 623, 251);
f2(113, 251, 750);
f2(622, 114, 289);
f2(40, 211, 116);
f2(605, 229, 604);
f2(605, 493, 229);
f2(372, 116, 211);
f2(372, 118, 116);
f2(118, 115, 116);
f2(228, 118, 222);
f2(222, 118, 372);
f2(493, 118, 228);
f2(229, 493, 228);
f2(372, 211, 210);
f2(222, 372, 210);
f2(210, 571, 612);
f2(222, 210, 612);
f2(371, 605, 300);
f2(370, 300, 681);
f2(285, 128, 494);
f2(359, 285, 494);
f2(719, 359, 494);
f2(543, 719, 494);
f2(362, 719, 543);
f2(370, 168, 307);
f2(300, 370, 307);
f2(300, 307, 371);
f2(307, 373, 371);
f2(588, 723, 575);
f2(588, 575, 498);
f2(219, 122, 200);
f2(219, 200, 723);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 110
//redl (redl)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class redl extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function redl(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-0.368247, 1.141258, 3.20341);
v(-0.329784, 1.19972, 3.210593);
v(-0.280029, 1.248456, 3.216421);
v(-0.22098, 1.291622, 3.217068);
v(-0.152802, 1.325366, 3.218138);
v(-0.668897, 0.099141, 0.085683);
v(-0.70233, 0.189518, -0.035852);
v(-0.397669, -0.34463, -1.071585);
v(-0.465178, -0.429917, -1.10205);
v(-0.451983, -0.653343, -1.095175);
v(-0.598775, -0.533536, -1.041103);
v(-0.376205, 0.338529, -0.390385);
v(-0.212126, 0.308412, -0.308632);
v(-0.196889, 0.287442, -0.413151);
v(-0.219696, -1.258276, -1.022207);
v(-0.378278, -1.232539, 0.321709);
v(-0.580901, -0.913876, -0.887117);
v(-0.569635, -0.713813, -0.975048);
v(-0.726694, -0.633442, -0.752506);
v(-0.147416, -0.083324, -0.923803);
v(-0.445006, 0.260267, -0.65757);
v(-0.695864, 0.170179, -0.706453);
v(-0.186654, 0.25699, -0.513809);
v(-0.179185, 0.2155, -0.613017);
v(-0.675311, 0.294937, -0.292173);
v(-0.630461, 0.233208, 0.008501);
v(-0.636839, 0.284263, -0.083408);
v(-0.762423, 0.15635, -0.133949);
v(-0.863162, -0.305493, -0.61432);
v(-0.815491, 0.090219, -0.300522);
v(-0.855422, -0.076505, -0.635214);
v(-0.803599, -0.227951, -0.847038);
v(-0.589447, -0.084718, -0.999959);
v(-0.809269, -0.430974, -0.76021);
v(-0.337945, -1.384923, -0.586103);
v(-0.52413, -1.139659, -0.771818);
v(-0.097032, -1.306633, -0.999903);
v(-0.314638, -1.395225, -0.078669);
v(-0.322206, -1.423576, -0.360701);
v(-0.495659, 0.318177, -0.48796);
v(-0.383589, 0.140606, -0.805562);
v(-0.309646, -0.032014, -0.926554);
v(-0.867999, -0.161012, -0.479184);
v(-0.222665, -0.343937, -1.061303);
v(-0.168149, 0.093082, -0.795981);
v(-0.152987, 0.014436, -0.862807);
v(-0.736576, -0.343339, -0.944268);
v(-0.333493, 0.322457, 0.01179);
v(-0.463392, 0.276425, 0.083882);
v(-0.473454, 0.345137, -0.189768);
v(-0.272008, 0.328163, -0.105281);
v(-0.249893, -0.346485, 1.299893);
v(-0.304869, -0.977259, 0.748424);
v(-0.207436, 0.829281, 3.604215);
v(-0.148513, 0.807638, 3.650396);
v(-0.218965, 0.990975, 3.5801);
v(-0.401708, 0.990672, 3.206774);
v(-0.386261, 0.953386, 3.278677);
v(-0.392861, 1.070601, 3.199768);
v(-0.247206, 0.848347, 3.560709);
v(-0.234124, 0.321143, -0.209498);
v(-0.174064, 0.1619, -0.709668);
v(-1.144359, -0.521395, 0.718582);
v(-1.150508, -0.442255, 0.774726);
v(-1.023257, -0.760617, 1.613489);
v(-1.005348, -0.914973, 1.697415);
v(-0.97489, -0.994824, 1.648364);
v(-1.13954, -0.653897, 0.805786);
v(-1.041177, -0.9914, 1.539485);
v(-1.003556, -0.990792, 1.64844);
v(-1.122257, -0.884, 1.298819);
v(-0.975209, -0.801156, 1.653917);
v(-0.970549, -0.858667, 1.690592);
v(-0.967937, -0.907775, 1.706207);
v(-0.967766, -0.953103, 1.706631);
v(-0.989616, -1.009029, 1.553993);
v(-0.980217, -1.00286, 1.621039);
v(-1.098861, -0.643254, 0.776619);
v(-1.051354, -0.884172, 1.114321);
v(-1.088764, -0.71181, 0.846353);
v(-1.026833, -0.530043, 1.290692);
v(-1.070697, -0.41993, 0.978399);
v(-1.124303, -0.798696, 1.001572);
v(-1.053045, -0.899076, 1.630102);
v(-1.112063, -0.800615, 1.483811);
v(-1.169766, -0.527711, 1.022679);
v(-1.18024, -0.630714, 0.925718);
v(-1.066735, -0.617354, 1.423614);
v(-0.576419, 0.206197, 0.105986);
v(-0.760792, -0.041695, -0.011329);
v(-0.696605, -0.890735, 0.445577);
v(-0.619003, -0.774422, 0.692767);
v(-0.569442, -0.714234, 0.799102);
v(-0.313207, -0.43253, 1.199985);
v(-0.354865, -0.864337, -1.145978);
v(-0.118567, -0.632078, -1.210089);
v(-0.241684, -0.773962, -1.235995);
v(-0.351608, -1.064595, -1.106084);
v(-1.176748, -1.964262, -1.640818);
v(-1.568082, -2.032735, -1.394712);
v(-1.046602, -1.84243, -1.598118);
v(-0.877706, -1.622223, -1.24349);
v(-1.0262, -2.050961, -1.920185);
v(-1.410704, -1.977666, -1.352193);
v(-1.077143, -1.987852, -1.787508);
v(-1.370711, -2.150613, -1.84877);
v(-1.483638, -2.111245, -1.640952);
v(-0.271991, -1.430843, -1.525964);
v(-0.282608, -1.281098, -1.097801);
v(-1.218461, -2.178016, -2.074872);
v(-0.131342, -1.053108, -1.534444);
v(-0.180192, -1.210631, -1.527784);
v(-0.20994, -1.270998, -1.360957);
v(-0.151336, -1.324557, -1.489028);
v(-0.391846, -0.957504, -1.094357);
v(-0.337167, -0.701234, -1.140437);
v(-0.246645, -0.619366, -1.163321);
v(-0.38365, -1.283827, -1.143322);
v(-0.275162, -1.404166, -1.507673);
v(-1.259609, -1.92446, -1.481866);
v(-0.912805, -1.840053, -1.735407);
v(-1.156066, -2.023339, -1.713686);
v(-1.039918, -1.770694, -1.309685);
v(-0.407009, -1.340865, -1.13245);
v(-1.071748, -1.911508, -1.568054);
v(-1.072234, -0.941528, 1.274011);
v(-0.997821, -1.00715, 1.495496);
v(-0.517237, -0.644001, 0.90374);
v(-0.171649, -1.38468, -1.475497);
v(-0.162038, -1.350292, -1.336117);
v(-0.116194, -1.362423, -1.472744);
v(-0.098299, -1.365059, -1.407651);
v(-0.305881, -1.194682, -1.069833);
v(-0.321347, -1.233672, -1.103108);
v(-0.228816, -1.260166, -1.076104);
v(-0.315838, -1.182298, -1.02598);
v(-0.078712, 1.347079, 3.214291);
v(-0.643396, -1.019745, 0.375994);
v(-0.457157, -0.832526, 0.813566);
v(-1.170108, 0.104519, -1.259938);
v(-2.822255, 1.324555, -1.778405);
v(-0.788942, 0.324856, -0.283827);
v(-1.273875, 0.169377, -1.228471);
v(-0.774154, 0.132314, -0.817724);
v(-2.868354, 1.432328, -1.543799);
v(-1.026864, 0.016723, -0.977187);
v(-2.82588, 1.314952, -1.721296);
v(-2.812257, 1.394286, -1.6945);
v(-3.048028, 1.244588, -2.206323);
v(-3.065737, 1.477295, -1.839098);
v(-3.046581, 1.492795, -1.848688);
v(-3.304839, 1.662506, -1.927585);
v(-3.792437, 2.030867, -2.062776);
v(-2.42687, 1.233662, -1.348263);
v(-2.908418, 1.527284, -1.520878);
v(-0.658066, -0.340114, -1.109521);
v(-0.686735, -0.204469, -1.11703);
v(-0.743703, -0.044967, -1.040069);
v(-0.794447, 0.287647, -0.486318);
v(-0.776288, 0.301465, -0.166089);
v(-0.834904, 0.285811, -0.196112);
v(-0.884768, 0.187433, -0.346678);
v(-0.907398, 0.008875, -0.691382);
v(-0.816821, -0.207517, -1.032292);
v(-0.793462, -0.533033, -0.56637);
v(-0.834747, -0.329969, -0.316952);
v(-0.81646, -0.197999, -0.129542);
v(-0.842984, -0.329005, -0.219077);
v(-0.758178, -1.013909, -4.3E-5);
v(-0.761087, -1.023626, -0.099524);
v(-0.762352, -1.02504, -0.195889);
v(-0.72654, -0.94345, 0.299957);
v(-0.742181, -0.97361, 0.199957);
v(-0.627203, -1.231714, -0.156803);
v(-0.752363, -0.997154, 0.099956);
v(-0.611476, -1.189779, -0.474241);
v(-0.845922, -0.749092, -0.366009);
v(-0.864428, -0.731994, -0.291137);
v(-0.847048, -0.820222, -0.291776);
v(-0.832377, -0.869921, -0.280004);
v(-0.827366, -0.843187, -0.374052);
v(-0.866204, -0.77987, -0.199182);
v(-0.77972, -0.961004, -0.36195);
v(-0.848176, -0.789429, -0.329693);
v(-0.819765, -0.778087, -0.437652);
v(-0.845986, -0.586227, -0.380921);
v(-0.767333, -1.009144, -0.282296);
v(-0.131758, 1.245901, 3.399701);
v(-0.067278, 1.264064, 3.399953);
v(-0.337751, 1.046591, 3.390706);
v(-0.200089, 1.118112, 3.501159);
v(-1.10166, -0.41891, 0.757631);
v(-1.093581, -0.406707, 0.815288);
v(-1.106797, -0.439224, 0.72091);
v(-1.109101, -0.529901, 0.704094);
v(-1.109791, -0.458682, 0.698091);
v(-1.104665, -0.510016, 0.698213);
v(-1.080299, -0.407052, 0.909408);
v(-1.105425, -0.583368, 0.730074);
v(-1.019425, -0.971238, 1.341604);
v(-1.049698, -0.459685, 1.127908);
v(-1.046213, -0.470408, 1.152717);
v(-1.069439, -0.812643, 0.985674);
v(-0.083982, 1.014574, 3.633521);
v(-0.149042, 1.058493, 3.580708);
v(-0.24905, 1.174074, 3.398861);
v(-0.191631, 1.215999, 3.399173);
v(-0.318552, 1.087182, 3.407881);
v(-0.346839, 1.008114, 3.375202);
v(-0.356, 0.93906, 3.369481);
v(-0.348739, 0.906699, 3.375266);
v(-0.285561, 1.081024, 3.456715);
v(-0.255292, 1.004872, 3.531349);
v(-0.269302, 0.860544, 3.527016);
v(-1.072974, -0.798079, 0.960613);
v(-1.000772, -0.639456, 1.475272);
v(-0.997615, -0.65603, 1.497213);
v(-1.023476, -0.964504, 1.312748);
v(-0.093081, -0.657593, 1.083644);
v(-0.134396, -0.779515, 0.977683);
v(-0.070849, -0.471195, 1.254381);
v(-0.189312, -0.610377, 1.12218);
v(-0.248162, -0.727948, 1.00483);
v(-0.264744, 1.053374, 3.499142);
v(-0.265017, 0.932659, 3.53599);
v(-0.971483, -0.974935, 1.684199);
v(-1.131294, -0.46855, 1.052657);
v(0.368247, 1.141258, 3.20341);
v(0.329784, 1.19972, 3.210593);
v(0.280029, 1.248456, 3.216421);
v(0.22098, 1.291622, 3.217068);
v(0.152802, 1.325366, 3.218138);
v(0.668897, 0.099141, 0.085683);
v(0.70233, 0.189518, -0.035852);
v(0.397669, -0.34463, -1.071585);
v(0.465178, -0.429917, -1.10205);
v(0.451983, -0.653343, -1.095175);
v(0.598775, -0.533536, -1.041103);
v(0.376205, 0.338529, -0.390385);
v(0.212126, 0.308412, -0.308632);
v(0.196889, 0.287442, -0.413151);
v(0.219696, -1.258276, -1.022207);
v(0.378278, -1.232539, 0.321709);
v(0.580901, -0.913876, -0.887117);
v(0.569635, -0.713813, -0.975048);
v(0.726694, -0.633442, -0.752506);
v(0.147416, -0.083324, -0.923803);
v(0.445006, 0.260267, -0.65757);
v(0.695864, 0.170179, -0.706453);
v(0.186654, 0.25699, -0.513809);
v(0.179185, 0.2155, -0.613017);
v(0.675311, 0.294937, -0.292173);
v(0.630461, 0.233208, 0.008501);
v(0.636839, 0.284263, -0.083408);
v(0.762423, 0.15635, -0.133949);
v(0.863162, -0.305493, -0.61432);
v(0.815491, 0.090219, -0.300522);
v(0.855422, -0.076505, -0.635214);
v(0.803599, -0.227951, -0.847038);
v(0.589447, -0.084718, -0.999959);
v(0.809269, -0.430974, -0.76021);
v(0.337945, -1.384923, -0.586103);
v(0.52413, -1.139659, -0.771818);
v(0.097032, -1.306633, -0.999903);
v(0.314638, -1.395225, -0.078669);
v(0.322206, -1.423576, -0.360701);
v(0.495659, 0.318177, -0.48796);
v(0.383589, 0.140606, -0.805562);
v(0.309646, -0.032014, -0.926554);
v(0.867999, -0.161012, -0.479184);
v(0.222665, -0.343937, -1.061303);
v(0.168149, 0.093082, -0.795981);
v(0.152987, 0.014436, -0.862807);
v(0.736576, -0.343339, -0.944268);
v(0.333493, 0.322457, 0.01179);
v(0.463392, 0.276425, 0.083882);
v(0.473454, 0.345137, -0.189768);
v(0.272008, 0.328163, -0.105281);
v(0.249893, -0.346485, 1.299893);
v(0.304869, -0.977259, 0.748424);
v(0.207436, 0.829281, 3.604215);
v(0.148513, 0.807638, 3.650396);
v(0.218965, 0.990975, 3.5801);
v(0.401708, 0.990672, 3.206774);
v(0.386261, 0.953386, 3.278677);
v(0.392861, 1.070601, 3.199768);
v(0.247206, 0.848347, 3.560709);
v(0.234124, 0.321143, -0.209498);
v(0.174064, 0.1619, -0.709668);
v(1.144359, -0.521395, 0.718582);
v(1.150508, -0.442255, 0.774726);
v(1.023257, -0.760617, 1.613489);
v(1.005348, -0.914973, 1.697415);
v(0.97489, -0.994824, 1.648364);
v(1.13954, -0.653897, 0.805786);
v(1.041177, -0.9914, 1.539485);
v(1.003556, -0.990792, 1.64844);
v(1.122257, -0.884, 1.298819);
v(0.975209, -0.801156, 1.653917);
v(0.970549, -0.858667, 1.690592);
v(0.967937, -0.907775, 1.706207);
v(0.967766, -0.953103, 1.706631);
v(0.989616, -1.009029, 1.553993);
v(0.980217, -1.00286, 1.621039);
v(1.098861, -0.643254, 0.776619);
v(1.051354, -0.884172, 1.114321);
v(1.088764, -0.71181, 0.846353);
v(1.026833, -0.530043, 1.290692);
v(1.070697, -0.41993, 0.978399);
v(1.124303, -0.798696, 1.001572);
v(1.053045, -0.899076, 1.630102);
v(1.112063, -0.800615, 1.483811);
v(1.169766, -0.527711, 1.022679);
v(1.18024, -0.630714, 0.925718);
v(1.066735, -0.617354, 1.423614);
v(0.576419, 0.206197, 0.105986);
v(0.760792, -0.041695, -0.011329);
v(0.696605, -0.890735, 0.445577);
v(0.619003, -0.774422, 0.692767);
v(0.569442, -0.714234, 0.799102);
v(0.313207, -0.43253, 1.199985);
v(0.354865, -0.864337, -1.145978);
v(0.118567, -0.632078, -1.210089);
v(0.241684, -0.773962, -1.235995);
v(0.351608, -1.064595, -1.106084);
v(1.176748, -1.964262, -1.640818);
v(1.568082, -2.032735, -1.394712);
v(1.046602, -1.84243, -1.598118);
v(0.877706, -1.622223, -1.24349);
v(1.0262, -2.050961, -1.920185);
v(1.410704, -1.977666, -1.352193);
v(1.077143, -1.987852, -1.787508);
v(1.370711, -2.150613, -1.84877);
v(1.483638, -2.111245, -1.640952);
v(0.271991, -1.430843, -1.525964);
v(0.282608, -1.281098, -1.097801);
v(1.218461, -2.178016, -2.074872);
v(0.131342, -1.053108, -1.534444);
v(0.180192, -1.210631, -1.527784);
v(0.20994, -1.270998, -1.360957);
v(0.151336, -1.324557, -1.489028);
v(0.391846, -0.957504, -1.094357);
v(0.337167, -0.701234, -1.140437);
v(0.246645, -0.619366, -1.163321);
v(0.38365, -1.283827, -1.143322);
v(0.275162, -1.404166, -1.507673);
v(1.259609, -1.92446, -1.481866);
v(0.912805, -1.840053, -1.735407);
v(1.156066, -2.023339, -1.713686);
v(1.039918, -1.770694, -1.309685);
v(0.407009, -1.340865, -1.13245);
v(1.071748, -1.911508, -1.568054);
v(1.072234, -0.941528, 1.274011);
v(0.997821, -1.00715, 1.495496);
v(0.517237, -0.644001, 0.90374);
v(0.171649, -1.38468, -1.475497);
v(0.162038, -1.350292, -1.336117);
v(0.116194, -1.362423, -1.472744);
v(0.098299, -1.365059, -1.407651);
v(0.305881, -1.194682, -1.069833);
v(0.321347, -1.233672, -1.103108);
v(0.228816, -1.260166, -1.076104);
v(0.315838, -1.182298, -1.02598);
v(0.078712, 1.347079, 3.214291);
v(0.643396, -1.019745, 0.375994);
v(0.457157, -0.832526, 0.813566);
v(1.170108, 0.104519, -1.259938);
v(2.822255, 1.324555, -1.778405);
v(0.788942, 0.324856, -0.283827);
v(1.273875, 0.169377, -1.228471);
v(0.774154, 0.132314, -0.817724);
v(2.868354, 1.432328, -1.543799);
v(1.026864, 0.016723, -0.977187);
v(2.82588, 1.314952, -1.721296);
v(2.812257, 1.394286, -1.6945);
v(3.048028, 1.244588, -2.206323);
v(3.065737, 1.477295, -1.839098);
v(3.046581, 1.492795, -1.848688);
v(3.304839, 1.662506, -1.927585);
v(3.792437, 2.030867, -2.062776);
v(2.42687, 1.233662, -1.348263);
v(2.908418, 1.527284, -1.520878);
v(0.658066, -0.340114, -1.109521);
v(0.686735, -0.204469, -1.11703);
v(0.743703, -0.044967, -1.040069);
v(0.794447, 0.287647, -0.486318);
v(0.776288, 0.301465, -0.166089);
v(0.834904, 0.285811, -0.196112);
v(0.884768, 0.187433, -0.346678);
v(0.907398, 0.008875, -0.691382);
v(0.816821, -0.207517, -1.032292);
v(0.793462, -0.533033, -0.56637);
v(0.834747, -0.329969, -0.316952);
v(0.81646, -0.197999, -0.129542);
v(0.842984, -0.329005, -0.219077);
v(0.758178, -1.013909, -4.3E-5);
v(0.761087, -1.023626, -0.099524);
v(0.762352, -1.02504, -0.195889);
v(0.72654, -0.94345, 0.299957);
v(0.742181, -0.97361, 0.199957);
v(0.627203, -1.231714, -0.156803);
v(0.752363, -0.997154, 0.099956);
v(0.611476, -1.189779, -0.474241);
v(0.845922, -0.749092, -0.366009);
v(0.864428, -0.731994, -0.291137);
v(0.847048, -0.820222, -0.291776);
v(0.832377, -0.869921, -0.280004);
v(0.827366, -0.843187, -0.374052);
v(0.866204, -0.77987, -0.199182);
v(0.77972, -0.961004, -0.36195);
v(0.848176, -0.789429, -0.329693);
v(0.819765, -0.778087, -0.437652);
v(0.845986, -0.586227, -0.380921);
v(0.767333, -1.009144, -0.282296);
v(0.131758, 1.245901, 3.399701);
v(0.067278, 1.264064, 3.399953);
v(0.337751, 1.046591, 3.390706);
v(0.200089, 1.118112, 3.501159);
v(1.10166, -0.41891, 0.757631);
v(1.093581, -0.406707, 0.815288);
v(1.106797, -0.439224, 0.72091);
v(1.109101, -0.529901, 0.704094);
v(1.109791, -0.458682, 0.698091);
v(1.104665, -0.510016, 0.698213);
v(1.080299, -0.407052, 0.909408);
v(1.105425, -0.583368, 0.730074);
v(1.019425, -0.971238, 1.341604);
v(1.049698, -0.459685, 1.127908);
v(1.046213, -0.470408, 1.152717);
v(1.069439, -0.812643, 0.985674);
v(0.083982, 1.014574, 3.633521);
v(0.149042, 1.058493, 3.580708);
v(0.24905, 1.174074, 3.398861);
v(0.191631, 1.215999, 3.399173);
v(0.318552, 1.087182, 3.407881);
v(0.346839, 1.008114, 3.375202);
v(0.356, 0.93906, 3.369481);
v(0.348739, 0.906699, 3.375266);
v(0.285561, 1.081024, 3.456715);
v(0.255292, 1.004872, 3.531349);
v(0.269302, 0.860544, 3.527016);
v(1.072974, -0.798079, 0.960613);
v(1.000772, -0.639456, 1.475272);
v(0.997615, -0.65603, 1.497213);
v(1.023476, -0.964504, 1.312748);
v(0.093081, -0.657593, 1.083644);
v(0.134396, -0.779515, 0.977683);
v(0.070849, -0.471195, 1.254381);
v(0.189312, -0.610377, 1.12218);
v(0.248162, -0.727948, 1.00483);
v(0.264744, 1.053374, 3.499142);
v(0.265017, 0.932659, 3.53599);
v(0.971483, -0.974935, 1.684199);
v(2.859245, 1.317088, -1.818184);
v(3.258586, 1.397423, -2.270713);
v(1.131294, -0.46855, 1.052657);
v(0, 1.354173, 3.214158);
v(0, 1.270211, 3.399992);
v(0, 0.967043, 3.66727);
v(0, 0.760489, 3.747782);
v(0, -0.793027, 0.972985);
v(0, -0.690649, 1.057591);
v(0, -0.520112, 1.210722);
v(0, -0.442341, 1.282039);
v(0, -0.076061, 1.614273);
v(0, -1.222325, 0.459373);
v(0, -1.374171, 0.153553);
v(0, -1.489289, -0.34954);
v(0, -1.462749, -0.150462);
v(0, -1.449478, -0.63717);
v(0, 0.063679, -0.822175);
v(0, -0.638599, -1.236798);
v(0, -0.163516, -0.982245);
v(0, -0.985647, -1.53053);
v(0, -1.317804, -0.99564);
v(0, -1.395611, -1.498635);
v(0, -1.399428, -1.823582);
v(-3.258586, 1.397423, -2.270713);
v(-2.859245, 1.317088, -1.818184);
f2(57, 209, 210);
f2(223, 205, 55);
f2(211, 205, 223);
f2(207, 205, 211);
f2(224, 55, 59);
f2(213, 224, 59);
f2(212, 55, 224);
f2(3, 4, 206);
f2(223, 55, 212);
f2(203, 458, 459);
f2(59, 55, 53);
f2(57, 208, 209);
f2(58, 208, 57);
f2(56, 58, 57);
f2(58, 0, 208);
f2(54, 55, 459);
f2(136, 456, 457);
f2(4, 136, 457);
f2(55, 204, 203);
f2(55, 203, 459);
f2(53, 55, 54);
f2(115, 9, 94);
f2(114, 16, 97);
f2(114, 17, 16);
f2(94, 17, 114);
f2(9, 17, 94);
f2(52, 460, 465);
f2(15, 52, 465);
f2(138, 222, 52);
f2(137, 52, 15);
f2(137, 138, 52);
f2(92, 127, 138);
f2(91, 138, 137);
f2(91, 92, 138);
f2(221, 222, 138);
f2(93, 51, 221);
f2(51, 464, 221);
f2(44, 61, 40);
f2(23, 20, 40);
f2(23, 40, 61);
f2(30, 29, 42);
f2(49, 11, 12);
f2(50, 49, 12);
f2(60, 50, 12);
f2(49, 50, 47);
f2(25, 48, 88);
f2(26, 48, 25);
f2(26, 47, 48);
f2(49, 47, 26);
f2(11, 49, 39);
f2(32, 157, 7);
f2(157, 156, 7);
f2(7, 156, 8);
f2(156, 155, 8);
f2(155, 46, 10);
f2(163, 46, 155);
f2(163, 31, 46);
f2(46, 33, 10);
f2(31, 33, 46);
f2(43, 95, 471);
f2(45, 41, 19);
f2(45, 40, 41);
f2(44, 40, 45);
f2(95, 43, 116);
f2(43, 7, 116);
f2(41, 32, 43);
f2(43, 32, 7);
f2(40, 32, 41);
f2(11, 39, 20);
f2(39, 49, 24);
f2(16, 35, 97);
f2(97, 35, 135);
f2(37, 468, 467);
f2(38, 37, 467);
f2(37, 466, 468);
f2(37, 15, 466);
f2(474, 36, 469);
f2(14, 135, 34);
f2(135, 35, 34);
f2(469, 38, 467);
f2(34, 38, 469);
f2(33, 18, 17);
f2(10, 33, 17);
f2(24, 141, 158);
f2(159, 141, 26);
f2(141, 24, 26);
f2(163, 30, 31);
f2(162, 30, 163);
f2(162, 161, 30);
f2(161, 29, 30);
f2(30, 42, 28);
f2(31, 30, 28);
f2(31, 28, 33);
f2(160, 159, 27);
f2(159, 6, 27);
f2(161, 160, 29);
f2(160, 27, 29);
f2(26, 25, 6);
f2(159, 26, 6);
f2(49, 26, 24);
f2(22, 20, 23);
f2(22, 11, 20);
f2(13, 11, 22);
f2(21, 158, 143);
f2(24, 158, 21);
f2(20, 39, 21);
f2(20, 21, 32);
f2(40, 20, 32);
f2(17, 18, 16);
f2(15, 465, 466);
f2(36, 34, 469);
f2(36, 14, 34);
f2(12, 11, 13);
f2(21, 143, 32);
f2(32, 143, 157);
f2(9, 10, 17);
f2(9, 155, 10);
f2(8, 9, 115);
f2(7, 8, 115);
f2(116, 7, 115);
f2(8, 155, 9);
f2(19, 41, 43);
f2(27, 6, 89);
f2(6, 25, 5);
f2(25, 88, 5);
f2(0, 1, 207);
f2(1, 2, 207);
f2(3, 206, 2);
f2(39, 24, 21);
f2(214, 82, 202);
f2(202, 82, 78);
f2(200, 201, 80);
f2(70, 84, 68);
f2(84, 64, 83);
f2(125, 70, 68);
f2(84, 87, 64);
f2(63, 85, 86);
f2(78, 125, 217);
f2(87, 80, 215);
f2(87, 216, 64);
f2(87, 215, 216);
f2(77, 67, 79);
f2(198, 62, 67);
f2(195, 62, 196);
f2(77, 198, 67);
f2(65, 74, 69);
f2(74, 225, 69);
f2(69, 225, 66);
f2(69, 66, 76);
f2(68, 69, 75);
f2(126, 68, 75);
f2(69, 76, 75);
f2(65, 73, 74);
f2(64, 72, 65);
f2(64, 71, 72);
f2(65, 72, 73);
f2(64, 216, 71);
f2(86, 84, 70);
f2(82, 86, 70);
f2(78, 82, 125);
f2(214, 67, 82);
f2(67, 86, 82);
f2(82, 70, 125);
f2(68, 83, 69);
f2(83, 65, 69);
f2(83, 64, 65);
f2(84, 83, 68);
f2(125, 68, 126);
f2(62, 86, 67);
f2(62, 63, 86);
f2(79, 67, 214);
f2(195, 63, 62);
f2(97, 132, 112);
f2(94, 114, 97);
f2(95, 116, 96);
f2(96, 115, 94);
f2(116, 115, 96);
f2(118, 120, 109);
f2(118, 100, 120);
f2(107, 118, 109);
f2(119, 117, 99);
f2(100, 119, 106);
f2(100, 117, 119);
f2(118, 117, 100);
f2(117, 101, 99);
f2(117, 123, 101);
f2(108, 104, 124);
f2(128, 107, 102);
f2(102, 107, 109);
f2(108, 129, 102);
f2(129, 128, 102);
f2(122, 108, 124);
f2(101, 123, 122);
f2(101, 103, 99);
f2(101, 122, 103);
f2(122, 119, 103);
f2(122, 124, 119);
f2(124, 104, 121);
f2(120, 100, 105);
f2(103, 119, 99);
f2(104, 120, 105);
f2(121, 104, 105);
f2(100, 98, 105);
f2(98, 121, 105);
f2(98, 124, 121);
f2(124, 98, 106);
f2(98, 100, 106);
f2(113, 118, 107);
f2(117, 133, 123);
f2(133, 108, 123);
f2(123, 108, 122);
f2(132, 133, 112);
f2(112, 117, 118);
f2(112, 133, 117);
f2(113, 112, 118);
f2(130, 131, 475);
f2(130, 475, 476);
f2(473, 110, 476);
f2(110, 111, 476);
f2(111, 97, 112);
f2(94, 97, 111);
f2(110, 94, 111);
f2(96, 94, 110);
f2(95, 96, 110);
f2(473, 95, 110);
f2(471, 95, 473);
f2(36, 474, 131);
f2(131, 474, 475);
f2(113, 130, 476);
f2(111, 112, 113);
f2(111, 113, 476);
f2(104, 108, 102);
f2(104, 102, 109);
f2(120, 104, 109);
f2(119, 124, 106);
f2(199, 125, 126);
f2(217, 125, 199);
f2(130, 128, 129);
f2(129, 131, 130);
f2(129, 134, 131);
f2(134, 14, 131);
f2(14, 36, 131);
f2(130, 113, 128);
f2(113, 107, 128);
f2(108, 134, 129);
f2(132, 134, 108);
f2(133, 132, 108);
f2(132, 14, 134);
f2(132, 135, 14);
f2(97, 135, 132);
f2(470, 19, 472);
f2(472, 43, 471);
f2(472, 19, 43);
f2(156, 139, 155);
f2(140, 478, 146);
f2(140, 139, 156);
f2(146, 162, 145);
f2(146, 144, 162);
f2(141, 154, 158);
f2(154, 153, 158);
f2(153, 147, 157);
f2(147, 140, 157);
f2(152, 154, 144);
f2(146, 478, 148);
f2(478, 140, 148);
f2(140, 147, 148);
f2(151, 149, 477);
f2(149, 150, 477);
f2(147, 150, 148);
f2(149, 146, 148);
f2(150, 149, 148);
f2(149, 144, 146);
f2(140, 146, 145);
f2(145, 162, 163);
f2(157, 140, 156);
f2(139, 163, 155);
f2(142, 145, 163);
f2(139, 142, 163);
f2(162, 144, 161);
f2(143, 153, 157);
f2(158, 153, 143);
f2(154, 160, 161);
f2(144, 154, 161);
f2(154, 159, 160);
f2(139, 140, 142);
f2(142, 140, 145);
f2(159, 154, 141);
f2(150, 151, 477);
f2(152, 151, 150);
f2(152, 144, 149);
f2(151, 152, 149);
f2(153, 152, 147);
f2(154, 152, 153);
f2(152, 150, 147);
f2(29, 166, 42);
f2(42, 165, 28);
f2(42, 166, 165);
f2(28, 165, 164);
f2(28, 164, 33);
f2(33, 164, 18);
f2(27, 89, 166);
f2(29, 27, 166);
f2(165, 166, 167);
f2(170, 169, 173);
f2(168, 174, 173);
f2(172, 171, 137);
f2(180, 182, 175);
f2(176, 177, 183);
f2(165, 167, 185);
f2(164, 165, 185);
f2(18, 164, 184);
f2(90, 91, 137);
f2(186, 170, 173);
f2(169, 168, 173);
f2(173, 37, 38);
f2(175, 173, 38);
f2(173, 15, 37);
f2(173, 137, 15);
f2(174, 137, 173);
f2(35, 175, 34);
f2(34, 175, 38);
f2(174, 172, 137);
f2(171, 90, 137);
f2(176, 183, 180);
f2(178, 181, 179);
f2(180, 178, 179);
f2(164, 185, 184);
f2(175, 186, 173);
f2(182, 186, 175);
f2(16, 180, 35);
f2(35, 180, 175);
f2(184, 180, 16);
f2(18, 184, 16);
f2(184, 176, 180);
f2(180, 179, 182);
f2(192, 197, 63);
f2(63, 191, 192);
f2(193, 191, 63);
f2(193, 63, 195);
f2(194, 196, 62);
f2(198, 194, 62);
f2(204, 55, 190);
f2(55, 205, 190);
f2(207, 2, 205);
f2(2, 206, 205);
f2(188, 4, 457);
f2(187, 4, 188);
f2(206, 4, 187);
f2(0, 207, 189);
f2(208, 0, 189);
f2(6, 5, 89);
f2(461, 218, 462);
f2(52, 222, 219);
f2(219, 460, 52);
f2(221, 464, 220);
f2(220, 464, 463);
f2(85, 226, 87);
f2(85, 87, 84);
f2(86, 85, 84);
f2(63, 226, 85);
f2(63, 197, 226);
f2(226, 197, 81);
f2(226, 80, 87);
f2(226, 81, 200);
f2(226, 200, 201);
f2(80, 226, 201);
f2(127, 93, 221);
f2(138, 127, 221);
f2(436, 284, 437);
f2(432, 450, 282);
f2(432, 438, 450);
f2(432, 434, 438);
f2(282, 451, 286);
f2(451, 440, 286);
f2(282, 439, 451);
f2(231, 230, 433);
f2(282, 450, 439);
f2(458, 430, 459);
f2(282, 286, 280);
f2(435, 284, 436);
f2(435, 285, 284);
f2(285, 283, 284);
f2(227, 285, 435);
f2(282, 281, 459);
f2(456, 363, 457);
f2(363, 231, 457);
f2(431, 282, 430);
f2(430, 282, 459);
f2(282, 280, 281);
f2(236, 342, 321);
f2(243, 341, 324);
f2(244, 341, 243);
f2(244, 321, 341);
f2(244, 236, 321);
f2(460, 279, 465);
f2(279, 242, 465);
f2(449, 365, 279);
f2(279, 364, 242);
f2(365, 364, 279);
f2(354, 319, 365);
f2(365, 318, 364);
f2(319, 318, 365);
f2(449, 448, 365);
f2(278, 320, 448);
f2(464, 278, 448);
f2(288, 271, 267);
f2(247, 250, 267);
f2(267, 250, 288);
f2(0x0100, 0x0101, 269);
f2(238, 276, 239);
f2(276, 277, 239);
f2(277, 287, 239);
f2(277, 276, 274);
f2(275, 252, 315);
f2(275, 253, 252);
f2(274, 253, 275);
f2(274, 276, 253);
f2(276, 238, 266);
f2(384, 259, 234);
f2(383, 384, 234);
f2(383, 234, 235);
f2(382, 383, 235);
f2(273, 382, 237);
f2(273, 390, 382);
f2(258, 390, 273);
f2(260, 273, 237);
f2(260, 258, 273);
f2(322, 270, 471);
f2(268, 272, 246);
f2(267, 272, 268);
f2(267, 271, 272);
f2(270, 322, 343);
f2(234, 270, 343);
f2(259, 268, 270);
f2(259, 270, 234);
f2(259, 267, 268);
f2(266, 238, 247);
f2(276, 266, 251);
f2(262, 243, 324);
f2(262, 324, 362);
f2(468, 264, 467);
f2(264, 265, 467);
f2(466, 264, 468);
f2(242, 264, 466);
f2(263, 474, 469);
f2(362, 241, 261);
f2(262, 362, 261);
f2(265, 469, 467);
f2(265, 261, 469);
f2(245, 260, 244);
f2(260, 237, 244);
f2(368, 251, 385);
f2(368, 386, 253);
f2(251, 368, 253);
f2(0x0101, 390, 258);
f2(0x0101, 389, 390);
f2(388, 389, 0x0101);
f2(0x0100, 388, 0x0101);
f2(269, 0x0101, 0xFF);
f2(0x0101, 258, 0xFF);
f2(0xFF, 258, 260);
f2(386, 387, 254);
f2(233, 386, 254);
f2(387, 388, 0x0100);
f2(254, 387, 0x0100);
f2(252, 253, 233);
f2(253, 386, 233);
f2(253, 276, 251);
f2(247, 249, 250);
f2(238, 249, 247);
f2(238, 240, 249);
f2(385, 248, 370);
f2(385, 251, 248);
f2(266, 247, 248);
f2(248, 247, 259);
f2(247, 267, 259);
f2(245, 244, 243);
f2(465, 242, 466);
f2(261, 263, 469);
f2(241, 263, 261);
f2(238, 239, 240);
f2(370, 248, 259);
f2(370, 259, 384);
f2(237, 236, 244);
f2(382, 236, 237);
f2(236, 235, 342);
f2(235, 234, 342);
f2(234, 343, 342);
f2(382, 235, 236);
f2(268, 246, 270);
f2(233, 254, 316);
f2(252, 233, 232);
f2(315, 252, 232);
f2(228, 227, 434);
f2(229, 228, 434);
f2(433, 230, 229);
f2(251, 266, 248);
f2(309, 441, 429);
f2(309, 429, 305);
f2(428, 427, 307);
f2(311, 297, 295);
f2(291, 311, 310);
f2(297, 352, 295);
f2(314, 311, 291);
f2(312, 290, 313);
f2(352, 305, 444);
f2(307, 314, 442);
f2(443, 314, 291);
f2(442, 314, 443);
f2(294, 304, 306);
f2(289, 425, 294);
f2(289, 422, 423);
f2(425, 304, 294);
f2(301, 292, 296);
f2(452, 301, 296);
f2(452, 296, 293);
f2(293, 296, 303);
f2(296, 295, 302);
f2(295, 353, 302);
f2(303, 296, 302);
f2(300, 292, 301);
f2(299, 291, 292);
f2(298, 291, 299);
f2(299, 292, 300);
f2(443, 291, 298);
f2(311, 313, 297);
f2(313, 309, 297);
f2(309, 305, 352);
f2(294, 441, 309);
f2(313, 294, 309);
f2(297, 309, 352);
f2(310, 295, 296);
f2(292, 310, 296);
f2(291, 310, 292);
f2(310, 311, 295);
f2(295, 352, 353);
f2(313, 289, 294);
f2(290, 289, 313);
f2(294, 306, 441);
f2(290, 422, 289);
f2(359, 324, 339);
f2(341, 321, 324);
f2(343, 322, 323);
f2(342, 323, 321);
f2(342, 343, 323);
f2(347, 345, 336);
f2(327, 345, 347);
f2(345, 334, 336);
f2(344, 346, 326);
f2(346, 327, 333);
f2(344, 327, 346);
f2(344, 345, 327);
f2(328, 344, 326);
f2(350, 344, 328);
f2(331, 335, 351);
f2(334, 355, 329);
f2(334, 329, 336);
f2(356, 335, 329);
f2(355, 356, 329);
f2(335, 349, 351);
f2(350, 328, 349);
f2(330, 328, 326);
f2(349, 328, 330);
f2(346, 349, 330);
f2(351, 349, 346);
f2(331, 351, 348);
f2(327, 347, 332);
f2(346, 330, 326);
f2(347, 331, 332);
f2(331, 348, 332);
f2(325, 327, 332);
f2(348, 325, 332);
f2(351, 325, 348);
f2(325, 351, 333);
f2(327, 325, 333);
f2(345, 340, 334);
f2(360, 344, 350);
f2(335, 360, 350);
f2(335, 350, 349);
f2(360, 359, 339);
f2(344, 339, 345);
f2(360, 339, 344);
f2(339, 340, 345);
f2(358, 357, 475);
f2(475, 357, 476);
f2(337, 473, 476);
f2(338, 337, 476);
f2(324, 338, 339);
f2(324, 321, 338);
f2(321, 337, 338);
f2(321, 323, 337);
f2(323, 322, 337);
f2(322, 473, 337);
f2(322, 471, 473);
f2(474, 263, 358);
f2(474, 358, 475);
f2(357, 340, 476);
f2(339, 338, 340);
f2(340, 338, 476);
f2(335, 331, 329);
f2(329, 331, 336);
f2(331, 347, 336);
f2(351, 346, 333);
f2(352, 426, 353);
f2(352, 444, 426);
f2(355, 357, 356);
f2(358, 356, 357);
f2(361, 356, 358);
f2(241, 361, 358);
f2(263, 241, 358);
f2(340, 357, 355);
f2(334, 340, 355);
f2(361, 335, 356);
f2(361, 359, 335);
f2(359, 360, 335);
f2(241, 359, 361);
f2(362, 359, 241);
f2(362, 324, 359);
f2(246, 470, 472);
f2(270, 472, 471);
f2(246, 472, 270);
f2(366, 383, 382);
f2(453, 367, 373);
f2(366, 367, 383);
f2(389, 373, 372);
f2(371, 373, 389);
f2(381, 368, 385);
f2(380, 381, 385);
f2(374, 380, 384);
f2(367, 374, 384);
f2(381, 379, 371);
f2(453, 373, 375);
f2(367, 453, 375);
f2(374, 367, 375);
f2(376, 378, 454);
f2(377, 376, 454);
f2(377, 374, 375);
f2(373, 376, 375);
f2(376, 377, 375);
f2(371, 376, 373);
f2(373, 367, 372);
f2(389, 372, 390);
f2(367, 384, 383);
f2(390, 366, 382);
f2(372, 369, 390);
f2(369, 366, 390);
f2(371, 389, 388);
f2(380, 370, 384);
f2(380, 385, 370);
f2(387, 381, 388);
f2(381, 371, 388);
f2(386, 381, 387);
f2(367, 366, 369);
f2(367, 369, 372);
f2(381, 386, 368);
f2(378, 377, 454);
f2(378, 379, 377);
f2(371, 379, 376);
f2(379, 378, 376);
f2(379, 380, 374);
f2(379, 381, 380);
f2(377, 379, 374);
f2(393, 0x0100, 269);
f2(392, 269, 0xFF);
f2(393, 269, 392);
f2(392, 0xFF, 391);
f2(391, 0xFF, 260);
f2(391, 260, 245);
f2(316, 254, 393);
f2(254, 0x0100, 393);
f2(393, 392, 394);
f2(396, 397, 400);
f2(401, 395, 400);
f2(398, 399, 364);
f2(409, 407, 402);
f2(404, 403, 410);
f2(394, 392, 412);
f2(392, 391, 412);
f2(391, 245, 411);
f2(318, 317, 364);
f2(397, 413, 400);
f2(395, 396, 400);
f2(264, 400, 265);
f2(400, 402, 265);
f2(242, 400, 264);
f2(364, 400, 242);
f2(364, 401, 400);
f2(402, 262, 261);
f2(402, 261, 265);
f2(399, 401, 364);
f2(317, 398, 364);
f2(410, 403, 407);
f2(408, 405, 406);
f2(405, 407, 406);
f2(412, 391, 411);
f2(413, 402, 400);
f2(413, 409, 402);
f2(407, 243, 262);
f2(407, 262, 402);
f2(407, 411, 243);
f2(411, 245, 243);
f2(403, 411, 407);
f2(406, 407, 409);
f2(424, 419, 290);
f2(418, 290, 419);
f2(418, 420, 290);
f2(290, 420, 422);
f2(423, 421, 289);
f2(421, 425, 289);
f2(282, 431, 417);
f2(432, 282, 417);
f2(229, 434, 432);
f2(433, 229, 432);
f2(231, 415, 457);
f2(231, 414, 415);
f2(231, 433, 414);
f2(434, 227, 416);
f2(227, 435, 416);
f2(232, 233, 316);
f2(445, 461, 462);
f2(449, 279, 446);
f2(460, 446, 279);
f2(464, 448, 447);
f2(464, 447, 463);
f2(455, 312, 314);
f2(314, 312, 311);
f2(312, 313, 311);
f2(455, 290, 312);
f2(424, 290, 455);
f2(424, 455, 308);
f2(307, 455, 314);
f2(308, 455, 427);
f2(427, 455, 428);
f2(455, 307, 428);
f2(320, 354, 448);
f2(354, 365, 448);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 111
//tongue (tongue)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class tongue extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function tongue(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-0.117653, 0.646893, 3.411933);
v(0.018704, 0.631805, 3.442718);
v(-0.018704, 0.631805, 3.442718);
v(-0.064796, 0.635654, 3.431525);
v(0.087646, 0.642488, 3.434865);
v(0.117653, 0.646893, 3.411933);
v(0.037456, 0.637237, 3.456584);
v(0.064796, 0.635654, 3.431525);
v(0, 0.636276, 3.461871);
v(-0.087646, 0.642488, 3.434865);
v(0, 0.657698, 3.403831);
v(-0.037456, 0.637237, 3.456584);
v(0, 0.632088, 3.441719);
f2(6, 10, 8);
f2(4, 10, 6);
f2(5, 10, 4);
f2(10, 11, 8);
f2(10, 9, 11);
f2(10, 0, 9);
f2(10, 5, 7);
f2(12, 10, 1);
f2(0, 10, 3);
f2(10, 12, 2);
f2(10, 7, 1);
f2(3, 10, 2);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 112
//white (white)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class white extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function white(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(0.046814, 1.125335, 2.173375);
v(0.064438, 1.337659, 2.773474);
v(0.224928, -0.471851, 1.208598);
v(0.395798, 1.183414, 2.932827);
v(0.367088, 1.192274, 3.103895);
v(0.403305, 1.023553, 3.183291);
v(0.099014, 0.742271, 3.658124);
v(0.197654, 0.743672, 3.549311);
v(0.858665, -0.217897, 0.094249);
v(0.845636, -0.824333, 0.129757);
v(0.803795, -0.872914, 0.223737);
v(0.8993, -0.477064, -0.072426);
v(0.624347, 0.163445, 0.226728);
v(0.607104, 0.190083, 0.322507);
v(0.49711, 0.260267, 0.224072);
v(0.5841, 0.20402, 0.989771);
v(0.577105, 0.13855, 1.128675);
v(0.46661, 0.2332, 1.381578);
v(0.467986, 0.072435, 1.357909);
v(0.448167, -0.103217, 1.304978);
v(0.823553, -0.116989, 0.175022);
v(0.715157, 0.058868, 0.253456);
v(0.436329, 0.425748, 1.175275);
v(0.65158, 0.136919, 0.768001);
v(0.612416, 0.204807, 0.672867);
v(0.387998, 0.482579, 1.187102);
v(0.367541, 0.534989, 1.462499);
v(0.25854, 0.740024, 3.407919);
v(0.094647, 0.685388, 3.572217);
v(0.197895, 0.693764, 3.420946);
v(0.087646, 0.642488, 3.434865);
v(0.117653, 0.646893, 3.411933);
v(0.037456, 0.637237, 3.456584);
v(0.263935, 0.701791, 2.960119);
v(0.376292, 0.84224, 3.129898);
v(0.314758, 0.760643, 3.214571);
v(0.42147, 0.308552, 0.247933);
v(0.255435, 0.477107, 0.796049);
v(0.349384, 0.451323, 0.876977);
v(0.808684, -0.956524, -0.148483);
v(0.786607, -0.975409, -0.020092);
v(0.900215, -0.62039, -0.119584);
v(0.319325, -0.158057, 1.397809);
v(0.368574, 0.006037, 1.464547);
v(0.454223, 0.37488, 0.82802);
v(0.129554, 0.50894, 0.787908);
v(0.22334, 0.604653, 1.198423);
v(0.112519, 0.624686, 1.147077);
v(0.291467, 0.609846, 1.352273);
v(0.214259, 0.699015, 1.434263);
v(0.431216, 0.418358, 1.337594);
v(0.324566, 0.609044, 1.492493);
v(0.46365, 0.321173, 1.345166);
v(0.402204, 0.362622, 1.5483);
v(0.132012, 1.109818, 2.192115);
v(0.255634, 0.84245, 1.852545);
v(0.219402, 0.999844, 2.077962);
v(0.275448, 0.726242, 1.6553);
v(0.321093, 0.363417, 1.858902);
v(0.349117, 0.502127, 1.897474);
v(0.358706, 0.525125, 1.727642);
v(0.323765, 0.485822, 2.078155);
v(0.230486, 0.243228, 1.891316);
v(0.250463, 0.365253, 2.058506);
v(0.093877, 0.150828, 1.884731);
v(0.175305, 0.269717, 2.002108);
v(0.161422, 0.103987, 1.78031);
v(0.360483, 0.673648, 2.079292);
v(0.360712, 0.637299, 2.210104);
v(0.318275, 0.946513, 2.170952);
v(0.339465, 0.833935, 2.086359);
v(0.343589, 1.119864, 2.482922);
v(0.399522, 0.948168, 2.453653);
v(0.331093, 0.635176, 2.403936);
v(0.254515, 0.506219, 2.321944);
v(0.135284, 0.40517, 2.263999);
v(0.406977, 1.16211, 2.781049);
v(0.293972, 1.256772, 3.174158);
v(0.169338, 1.332908, 3.175714);
v(0.252398, 1.310442, 3.112731);
v(0.264149, 1.248147, 2.646102);
v(0.271521, 1.180841, 2.511267);
v(0.259671, 1.293641, 2.775862);
v(0.066659, 1.362365, 2.949091);
v(0.239864, 1.327004, 2.979891);
v(0.430442, 1.023416, 2.88273);
v(0.422475, 0.901401, 2.825579);
v(0.346292, 0.774369, 2.931737);
v(0.103279, 0.603325, 2.756957);
v(0.156574, 0.648777, 2.977929);
v(0.212038, 0.635439, 2.735701);
v(0.319619, 0.714382, 2.752504);
v(0.130533, 1.280781, 2.61256);
v(0.04656, 1.295017, 2.610265);
v(0.427688, 0.934754, 2.750678);
v(0.375948, 0.737396, 2.474329);
v(0.292425, 0.632798, 2.542927);
v(0.136784, 0.526994, 2.5073);
v(0.220587, 0.567485, 2.513998);
v(0.353952, 0.848555, 3.308008);
v(0.08207, 1.365353, 3.148934);
v(0.401403, 0.910259, 3.154748);
v(0.340643, 1.213949, 3.155907);
v(0.35198, 0.75483, 2.050314);
v(0.34373, 0.616015, 1.770523);
v(0.158282, 0.894048, 1.783548);
v(0.106454, 0.731806, 1.404108);
v(0.319971, 0.692756, 1.776338);
v(0.370507, 0.411299, 1.670907);
v(0.376567, 0.501954, 1.558377);
v(0.384132, 0.22224, 1.560677);
v(0.346663, 0.244004, 1.660755);
v(0.284494, 0.221037, 1.767722);
v(0.301195, 0.066759, 1.596295);
v(0.229234, 0.071533, 1.680431);
v(0.286865, 0.344936, 0.142838);
v(0.106538, 0.37759, 0.120383);
v(0.862641, -0.817914, -0.09469);
v(0.758057, -0.819025, 0.418356);
v(0.064162, 0.682142, 3.598635);
v(0.125735, 0.643147, 3.341845);
v(0.235866, 0.693329, 3.224957);
v(1.03166, -0.894512, 1.659176);
v(1.021325, -0.922318, 1.653166);
v(1.000531, -0.931855, 1.649833);
v(0.974136, -0.922715, 1.649453);
v(0.965518, -0.882118, 1.656228);
v(0.997102, -0.861225, 1.66259);
v(1.019891, -0.871562, 1.662427);
v(0.990056, -0.901237, 1.753449);
v(1.026405, -0.970649, 1.672224);
v(0.995187, -0.994839, 1.643872);
v(1.012846, -0.993221, 1.65364);
v(0.953958, -0.998723, 1.74833);
v(0.970553, -0.974156, 1.641832);
v(0.965687, -0.930631, 1.661748);
v(1.013434, -0.931115, 1.685945);
v(0.986602, -0.915303, 1.680266);
v(1.01604, -0.991944, 1.637101);
v(1.019998, -1.011672, 1.611288);
v(0.990398, -1.012139, 1.585343);
v(0.962835, -0.988838, 1.596402);
v(0.973567, -0.965843, 1.639393);
v(0.958575, -0.970914, 1.619321);
v(0.955055, -1.066177, 1.657637);
v(0.996002, -0.973602, 1.646804);
v(0.834769, -0.70743, 0.362318);
v(0.425364, 1.03708, 2.731181);
v(0.381888, 1.130222, 2.55746);
v(0.415117, -0.469679, 1.111906);
v(0.761808, -0.648824, 0.60286);
v(0.498345, -0.705696, 0.872227);
v(0.595177, -0.712009, 0.767903);
v(0.23938, -0.222413, 1.404772);
v(0.132144, -0.205078, 1.469186);
v(0.13964, -0.051954, 1.61762);
v(0.209067, 0.829329, 3.607319);
v(0.124131, 0.796747, 3.665851);
v(0.163451, 1.060346, 3.572802);
v(0.131968, 1.246115, 3.399005);
v(0.192929, 1.102495, 3.522398);
v(0.400967, 0.991577, 3.204843);
v(0.366058, 1.143878, 3.197206);
v(0.282877, 1.251968, 3.204626);
v(0.154402, 1.326713, 3.212447);
v(0.250055, 1.176705, 3.395227);
v(0.365453, 1.220909, 3.093743);
v(0.377063, 1.221865, 3.047918);
v(0.38714, 1.220872, 3.002888);
v(0.396269, 1.217903, 2.95501);
v(0.305538, 1.321543, 3.010584);
v(0.335415, 1.335958, 2.968258);
v(0.360522, 1.362602, 2.963601);
v(0.300511, 1.318725, 3.05911);
v(0.298624, 1.308295, 3.100423);
v(0.329678, 1.329604, 3.0785);
v(0.356116, 1.357988, 3.066541);
v(0.302801, 1.291956, 3.129685);
v(0.339721, 1.321032, 3.114073);
v(0.441096, 1.383994, 2.652208);
v(0.390952, 1.306616, 2.662383);
v(0.381962, 1.329529, 2.722106);
v(0.360392, 1.267902, 2.656039);
v(0.349853, 1.294428, 2.724561);
v(0.322413, 1.233144, 2.630028);
v(0.316676, 1.265272, 2.697515);
v(0.312865, 1.287365, 2.760664);
v(0.308914, 1.309288, 2.854871);
v(0.340685, 1.322867, 2.847184);
v(0.368555, 1.351146, 2.841355);
v(0.306223, 1.320606, 2.952362);
v(0.412889, 1.199909, 2.783136);
v(0.433374, 1.253303, 2.794403);
v(0.410783, 1.206827, 2.843627);
v(0.404629, 1.213042, 2.901577);
v(0.402252, 1.259113, 2.970082);
v(0.377036, 1.250571, 2.627488);
v(0.351597, 1.209275, 2.601922);
v(0.420878, 1.289904, 2.624582);
v(0.392048, 1.235976, 2.616371);
v(0.405256, 1.225419, 2.626561);
v(0.387163, 1.172451, 2.604478);
v(0.410255, 1.304063, 2.63536);
v(0.437559, 1.292336, 2.634233);
v(0.510124, 1.47473, 2.611037);
v(0.545887, 1.486967, 2.606039);
v(0.458835, 1.438736, 2.678889);
v(0.446461, 1.449279, 2.746445);
v(0.438632, 1.469435, 2.860467);
v(0.544183, 1.638481, 2.854942);
v(0.422828, 1.273436, 2.906261);
v(0.428943, 1.256203, 2.665313);
v(0.436423, 1.258223, 2.713536);
v(0.547409, 1.47102, 2.629731);
v(0.626605, 1.609864, 2.6086);
v(0.548664, 1.462266, 2.720721);
v(0.545464, 1.486364, 2.792331);
v(0.496663, 1.466701, 2.925302);
v(0.468492, 1.477743, 3.004049);
v(0.573221, 1.643879, 2.8753);
v(0.574308, 1.660224, 2.872992);
v(0.493987, 1.555094, 2.967864);
v(0.554016, 1.648122, 2.780005);
v(0.562081, 1.653062, 2.88049);
v(0.552994, 1.618993, 2.682611);
v(0.58858, 1.637736, 2.597649);
v(0.614174, 1.612844, 2.566208);
v(0.608612, 1.643189, 2.566555);
v(0.607197, 1.620913, 2.563838);
v(0.645747, 1.656493, 2.559299);
v(0.585749, 1.638573, 2.84503);
v(0.619493, 1.650721, 2.755589);
v(0.326178, 1.273781, 3.134716);
v(0.395244, 1.387173, 3.08092);
v(0.345795, 1.252542, 3.122577);
v(0.365918, 1.310779, 3.098969);
v(0.39062, 1.326086, 3.061003);
v(0.634132, 1.636628, 2.672963);
v(0.410076, 1.313444, 3.001596);
v(0.418857, 1.439276, 3.050264);
v(0.474814, 1.510865, 3.001605);
v(0.375021, 1.278866, 3.07426);
v(0.400752, 1.183905, 2.661931);
v(0.409502, 1.192608, 2.722017);
v(0.569372, 1.670452, 2.853094);
v(0.608065, 1.714405, 2.810516);
v(0.631838, 1.740209, 2.666247);
v(0.634836, 1.733023, 2.634268);
v(0.656473, 1.711328, 2.530835);
v(0.656048, 1.697749, 2.525044);
v(0.662411, 1.695257, 2.523884);
v(0.668321, 1.695136, 2.532875);
v(0.681565, 1.75181, 2.654747);
v(0.623836, 1.712518, 2.792975);
v(0.613662, 1.713472, 2.809361);
v(0.664677, 1.703275, 2.646612);
v(0.566686, 1.548679, 2.584461);
v(0.764321, 1.889888, 2.499512);
v(0.727372, 1.79081, 2.445571);
v(0.692342, 1.73995, 2.49024);
v(0.725264, 1.792979, 2.468035);
v(0.66411, 1.78551, 2.718494);
v(0.70152, 1.785679, 2.560794);
v(0.710403, 1.816629, 2.55729);
v(0.720407, 1.820391, 2.552178);
v(0.698701, 1.772667, 2.598447);
v(0.722143, 1.815766, 2.574216);
v(0.745538, 1.857976, 2.528326);
v(0.684721, 1.736658, 2.495499);
v(0.699081, 1.767645, 2.566216);
v(0.739024, 1.85922, 2.526545);
v(0.760222, 1.890482, 2.502056);
v(0.747423, 1.882305, 2.53676);
v(0.765415, 1.885909, 2.510188);
v(0.75382, 1.871732, 2.549993);
v(0.725516, 1.858459, 2.613132);
v(0.685018, 1.718751, 2.533774);
v(0.694325, 1.737271, 2.498112);
v(0.732539, 1.869113, 2.587071);
v(0.67063, 1.787624, 2.712745);
v(0.686363, 1.780539, 2.574228);
v(0.695572, 1.809339, 2.575191);
v(0.615591, 1.728183, 2.720552);
v(0.682134, 1.767641, 2.675971);
v(0.681566, 1.790424, 2.69284);
v(0.651016, 1.717832, 2.552359);
v(0.667774, 1.745151, 2.555365);
v(0.68676, 1.770257, 2.558101);
v(0.708868, 1.784899, 2.526522);
v(0.677249, 1.707258, 2.575122);
v(0.732488, 1.794922, 2.441735);
v(0.724924, 1.789506, 2.472788);
v(0.629383, 1.74754, 2.754111);
v(0.684763, 1.732715, 2.592608);
v(0.66024, 1.75677, 2.601193);
v(0.785055, 1.922307, 2.479112);
v(0.505147, 1.438557, 2.609363);
v(0.468342, 1.373502, 2.617767);
v(0.385092, 1.167695, 3.038046);
v(0.397505, 1.150912, 2.661667);
v(0.372085, 1.189212, 2.59179);
v(0.874903, -0.275115, 0.254293);
v(0.828177, -0.129414, 0.362516);
v(0.813388, -0.094175, 0.405178);
v(0.781944, -0.031838, 0.519221);
v(0.760164, -0.001098, 0.572902);
v(0.767087, 0.000946, 0.624009);
v(0.578308, 0.10992, 1.153846);
v(0.620146, 0.127567, 1.038538);
v(0.54574, 0.060718, 1.234042);
v(0.556302, 0.081673, 1.213191);
v(0.567426, 0.097332, 1.185752);
v(0.52166, -0.037189, 1.251004);
v(0.528393, -0.000357, 1.251983);
v(0.536404, 0.032944, 1.246745);
v(0.514378, -0.15575, 1.214467);
v(0.513539, -0.115487, 1.232781);
v(0.516372, -0.075808, 1.244728);
v(0.56112, -0.284849, 1.106755);
v(0.536281, -0.238146, 1.154526);
v(0.521187, -0.19446, 1.190468);
v(0.688985, -0.462989, 0.864661);
v(0.727078, -0.521865, 0.753922);
v(0.776287, -0.58566, 0.616147);
v(0.548925, -0.129965, 1.200903);
v(0.559011, 0.012803, 1.221728);
v(0.624537, -0.406821, 0.965245);
v(0.848643, -0.616952, 0.404888);
v(0.877485, -0.607947, 0.326994);
v(0.863802, -0.614645, 0.363794);
v(0.90917, -0.404643, 0.212227);
v(0.901264, -0.3647, 0.221434);
v(0.789518, -0.597155, 0.579394);
v(0.830283, -0.528446, 0.663717);
v(0.797408, -0.585481, 0.580601);
v(0.877372, -0.271889, 0.280097);
v(0.85729, -0.210643, 0.325511);
v(0.834969, -0.143245, 0.386697);
v(0.812439, -0.083656, 0.468837);
v(0.796441, -0.036257, 0.575444);
v(0.920167, -0.465918, 0.568286);
v(0.935667, -0.426306, 0.561886);
v(0.889876, -0.362455, 0.753316);
v(0.884115, -0.285814, 0.80305);
v(0.741684, -0.421971, 0.889015);
v(0.810862, -0.468548, 0.775261);
v(0.809493, -0.504127, 0.730481);
v(0.895651, -0.499389, 0.589027);
v(0.916584, -0.305348, 0.312232);
v(0.905368, -0.254961, 0.351988);
v(0.890293, -0.211623, 0.385672);
v(0.855385, -0.182606, 0.370221);
v(0.739383, 0.057288, 0.926604);
v(0.70041, 0.085586, 0.952974);
v(0.67854, 0.103214, 0.878759);
v(0.656985, 0.066336, 1.109773);
v(0.622597, 0.072046, 1.145273);
v(0.594629, 0.105073, 1.128);
v(0.679455, 0.08917, 1.020819);
v(0.628903, 0.116788, 1.048222);
v(0.622447, -0.302993, 1.061953);
v(0.625155, -0.24026, 1.118039);
v(0.590613, -0.261072, 1.108182);
v(0.566628, -0.209653, 1.152549);
v(0.872478, -0.169384, 0.424382);
v(0.831571, -0.110659, 0.462664);
v(0.775938, 0.015086, 0.710559);
v(0.74072, 0.05805, 0.812838);
v(0.805638, -0.534702, 0.669257);
v(0.759273, -0.519433, 0.729842);
v(0.774933, -0.566662, 0.638675);
v(0.541973, -0.061958, 1.228057);
v(0.559969, -0.067591, 1.218615);
v(0.553119, -0.016942, 1.226671);
v(0.577196, 0.047835, 1.199898);
v(0.565283, 0.054097, 1.207882);
v(0.581113, 0.080685, 1.171988);
v(0.631754, -0.343578, 1.0179);
v(0.859025, -0.608348, 0.398478);
v(0.912797, -0.559256, 0.358695);
v(0.891796, -0.579389, 0.399517);
v(0.89198, -0.588353, 0.323925);
v(0.924939, -0.538472, 0.310229);
v(0.941006, -0.492958, 0.308883);
v(0.941364, -0.404647, 0.291867);
v(0.917041, -0.510078, 0.216801);
v(0.924819, -0.368031, 0.270685);
v(0.903974, -0.346389, 0.247498);
v(0.636575, 0.126536, 0.985026);
v(0.695576, 0.087371, 0.817364);
v(0.864645, -0.565591, 0.524263);
v(0.835367, -0.612224, 0.449225);
v(0.814821, -0.590077, 0.548294);
v(0.625683, -0.131449, 1.178993);
v(0.588875, -0.147725, 1.184611);
v(0.631096, -0.065286, 1.191244);
v(0.589065, -0.078826, 1.208847);
v(0.636608, -0.02129, 1.18511);
v(0.593187, -0.015896, 1.211291);
v(0.617642, 0.0291, 1.183381);
v(0.667701, -0.269535, 1.080558);
v(0.672763, -0.19711, 1.124286);
v(0.633362, -0.191483, 1.147469);
v(0.672556, -0.124003, 1.152615);
v(0.895677, -0.540194, 0.507163);
v(0.918142, -0.53254, 0.443615);
v(0.681457, -0.06295, 1.151832);
v(0.663781, -0.00736, 1.15795);
v(0.937326, -0.511305, 0.368613);
v(0.715931, -0.002637, 1.090599);
v(0.667877, 0.02895, 1.134913);
v(0.953739, -0.441309, 0.37446);
v(0.943917, -0.451847, 0.295043);
v(0.953481, -0.390838, 0.363088);
v(0.712497, 0.041624, 1.052242);
v(0.667686, 0.076643, 1.078186);
v(0.707164, 0.066493, 1.012269);
v(0.936106, -0.342333, 0.324053);
v(0.673135, -0.34846, 1.00576);
v(0.716944, -0.329544, 1.001364);
v(0.721122, -0.277992, 1.040109);
v(0.752869, -0.226796, 1.040306);
v(0.711324, -0.189211, 1.098285);
v(0.768974, -0.168286, 1.041186);
v(0.919292, -0.501738, 0.511994);
v(0.723879, -0.127606, 1.104005);
v(0.769389, -0.10145, 1.044259);
v(0.721963, -0.060641, 1.106337);
v(0.943142, -0.47244, 0.456896);
v(0.951945, -0.424341, 0.463931);
v(0.763238, -0.040976, 1.032927);
v(0.956848, -0.392003, 0.417303);
v(0.955002, -0.35667, 0.484959);
v(0.951837, -0.315487, 0.468641);
v(0.757718, 0.006494, 1.000006);
v(0.758826, 0.027919, 0.954175);
v(0.942664, -0.301311, 0.406053);
v(0.917588, -0.238823, 0.411164);
v(0.920154, -0.20898, 0.495797);
v(0.775275, 0.026974, 0.878821);
v(0.746007, 0.056767, 0.857242);
v(0.89569, -0.163709, 0.501136);
v(0.708648, -0.37932, 0.957518);
v(0.7574, -0.312618, 0.982742);
v(0.791338, -0.268359, 0.973297);
v(0.810742, -0.213323, 0.968521);
v(0.813703, -0.147166, 0.971408);
v(0.848965, -0.13242, 0.885508);
v(0.807993, -0.084623, 0.963956);
v(0.947372, -0.369436, 0.552765);
v(0.946883, -0.314622, 0.560582);
v(0.929003, -0.239704, 0.633821);
v(0.840474, -0.078441, 0.863886);
v(0.800852, -0.03397, 0.936519);
v(0.841269, -0.053431, 0.798324);
v(0.806863, -0.012828, 0.86496);
v(0.936966, -0.251244, 0.502381);
v(0.924266, -0.207707, 0.582891);
v(0.792108, 0.012219, 0.769876);
v(0.812123, -0.019584, 0.674861);
v(0.856698, -0.094643, 0.555402);
v(0.764665, -0.385409, 0.91143);
v(0.796672, -0.36217, 0.900945);
v(0.863834, -0.331147, 0.824007);
v(0.824427, -0.310931, 0.902126);
v(0.847404, -0.260398, 0.889611);
v(0.853708, -0.196415, 0.889778);
v(0.890859, -0.222477, 0.793817);
v(0.895153, -0.17734, 0.756569);
v(0.868384, -0.125296, 0.813103);
v(0.932896, -0.302878, 0.647217);
v(0.878466, -0.11641, 0.744705);
v(0.904056, -0.160796, 0.663596);
v(0.894663, -0.137102, 0.624772);
v(0.862335, -0.078249, 0.705589);
v(0.830713, -0.031235, 0.735673);
v(0.872648, -0.100383, 0.61626);
v(0.835306, -0.055964, 0.613792);
v(0.842841, -0.527398, 0.644544);
v(0.865591, -0.521561, 0.616554);
v(0.815145, -0.517029, 0.703705);
v(0.821096, -0.524397, 0.683653);
v(0.840794, -0.427112, 0.784802);
v(0.865212, -0.396709, 0.775706);
v(0.913047, -0.341322, 0.709377);
v(0.929705, -0.363415, 0.647591);
v(0.861239, -0.230022, 0.261739);
v(0.846212, -0.179982, 0.276919);
v(0.828139, -0.130011, 0.303541);
v(0.797822, -0.062399, 0.457388);
v(0.712648, 0.058019, 0.55738);
v(0.728244, 0.050171, 0.715988);
v(0.588659, 0.120225, 1.121147);
v(0.519663, 0.151145, 1.275475);
v(0.477855, -0.207208, 1.221693);
v(0.462952, -0.340725, 1.154373);
v(0.583663, -0.346136, 1.045556);
v(0.613687, -0.499925, 0.905771);
v(0.63704, -0.56504, 0.828839);
v(0.749758, -0.553785, 0.690404);
v(0.807454, -0.684387, 0.458428);
v(0.869499, -0.677932, 0.254918);
v(0.906688, -0.477737, 0.126873);
v(0.907148, -0.562412, 0.245752);
v(0.91493, -0.442242, 0.208543);
v(0.889513, -0.597031, 0.294868);
v(0.804745, -0.605106, 0.536472);
v(0.890332, -0.322718, 0.237355);
v(0.889098, -0.348768, 0.138046);
v(0.797568, -0.069783, 0.301496);
v(0.657811, -0.392698, 0.954739);
v(0.734001, -0.481616, 0.809551);
v(0.696745, -0.422254, 0.911308);
v(1.104261, -0.478608, 0.678322);
v(1.104987, -0.534961, 0.679344);
v(1.09732, -0.451643, 0.711166);
v(1.095571, -0.434055, 0.750507);
v(1.083648, -0.424645, 0.853854);
v(1.096292, -0.705844, 0.801549);
v(1.072732, -0.434062, 0.936245);
v(1.089011, -0.766375, 0.875488);
v(1.064094, -0.675662, 0.773321);
v(1.004734, -0.741687, 1.570536);
v(1.011924, -0.688813, 1.507103);
v(1.000015, -0.799918, 1.628094);
v(1.018548, -1.022982, 1.521337);
v(1.028576, -1.013499, 1.435585);
v(0.996527, -0.857439, 1.669959);
v(0.995074, -0.9125, 1.69269);
v(1.002349, -1.002832, 1.650123);
v(0.966515, -0.888315, 1.674715);
v(0.958683, -0.980565, 1.639023);
v(0.995581, -0.96875, 1.694231);
v(0.926816, -0.872975, 1.563779);
v(1.009475, -1.019655, 1.593421);
v(0.982655, -1.013668, 1.503729);
v(0.970799, -0.755401, 1.569064);
v(1.058131, -0.932467, 1.170754);
v(1.019953, -0.892804, 1.10187);
v(0.991012, -0.557747, 1.259233);
v(1.06961, -0.882111, 1.063588);
v(1.031552, -0.565508, 1.308656);
v(1.043031, -0.515153, 1.201492);
v(1.106754, -0.590824, 0.702754);
v(1.056463, -0.468207, 1.078831);
v(1.084342, -0.800503, 0.922188);
v(1.025527, -0.779726, 0.925886);
v(0.956473, -0.637619, 0.986771);
v(0.978805, -0.72021, 0.949484);
v(0.964873, -0.554148, 1.027765);
v(1.001408, -0.492246, 1.061402);
v(1.016821, -0.647116, 1.450056);
v(1.0447, -0.979412, 1.293413);
v(0.961766, -0.671156, 1.432628);
v(0.916832, -0.816529, 1.357997);
v(0.925231, -0.733057, 1.39899);
v(0.939163, -0.899119, 1.320709);
v(0.985885, -0.958636, 1.297111);
v(0.996365, -0.5016, 1.091329);
v(0.958749, -0.565332, 1.056696);
v(0.950101, -0.651271, 1.014491);
v(0.973093, -0.736304, 0.976101);
v(1.021197, -0.79758, 0.951805);
v(0.96273, -0.653399, 1.406302);
v(0.925115, -0.717131, 1.37167);
v(0.916467, -0.80307, 1.329465);
v(0.939459, -0.888103, 1.291075);
v(0.987562, -0.949379, 1.266779);
v(1.019412, -0.628648, 1.424246);
v(1.048116, -0.97077, 1.262972);
v(1.08175, -0.818971, 0.947998);
v(1.053047, -0.476849, 1.109273);
v(0.975812, -0.590992, 0.89431);
v(1.001299, -0.48177, 0.917418);
v(1.015368, -0.677101, 0.829846);
v(1.043303, -0.641973, 0.760711);
v(1.067759, -0.566302, 0.700077);
v(1.059508, -0.446849, 0.752712);
v(1.029389, -0.448065, 0.846832);
v(1.045054, -0.444121, 0.952491);
v(1.04213, -0.438984, 0.857759);
v(0.941176, -0.766874, 1.520666);
v(0.918992, -0.809478, 1.446252);
v(0.927449, -0.905773, 1.452479);
v(0.935007, -0.935858, 1.534004);
v(0.958426, -0.95632, 1.379928);
v(1.008781, -0.994419, 1.367006);
v(0.839215, -0.527411, 0.665197);
v(0.980902, -0.52582, 0.878413);
v(0.974312, -0.576871, 0.862749);
v(1.026288, -0.627375, 0.759115);
v(1.03902, -0.600721, 0.728609);
v(1.05259, -0.472879, 0.717977);
v(1.041666, -0.448821, 0.763595);
v(0.990131, -0.623266, 0.788344);
v(0.835588, -0.524361, 0.712906);
v(0.974969, -0.611838, 0.816688);
v(0.996224, -0.486709, 0.873512);
v(0.984577, -0.618129, 0.841751);
v(1.053043, -0.508546, 0.699888);
v(1.050433, -0.462031, 0.734138);
v(1.013852, -0.461964, 0.840929);
v(0.941236, -0.448008, 0.62393);
v(1.040941, -0.479765, 0.711139);
v(1.035013, -0.462846, 0.721939);
v(0.942566, -0.398088, 0.669488);
v(0.938616, -0.417299, 0.632164);
v(1.027586, -0.448713, 0.774077);
v(0.932299, -0.389698, 0.703301);
v(1.035236, -0.453535, 0.747986);
v(0.926501, -0.379942, 0.687447);
v(1.008042, -0.451737, 0.803977);
v(0.910504, -0.3903, 0.730497);
v(0.893521, -0.405632, 0.753751);
v(0.977051, -0.4942, 0.84712);
v(0.990582, -0.470333, 0.831437);
v(0.879445, -0.424265, 0.767741);
v(0.858885, -0.453127, 0.772093);
v(1.004701, -0.473195, 0.859375);
v(0.964817, -0.55198, 0.854506);
v(0.85177, -0.483657, 0.768766);
v(0.968552, -0.520685, 0.854308);
v(0.96751, -0.588116, 0.841444);
v(0.834002, -0.505258, 0.741168);
v(1.003419, -0.616081, 0.75359);
v(1.025617, -0.599817, 0.729209);
v(0.890541, -0.516856, 0.628007);
v(0.927207, -0.46231, 0.613039);
v(1.035113, -0.506233, 0.694507);
v(1.031777, -0.544215, 0.695859);
v(1.032632, -0.574665, 0.71101);
v(0.912636, -0.491048, 0.614806);
v(1.000309, -0.644219, 0.814769);
v(1.018047, -0.639093, 0.779081);
v(1.052256, -0.552368, 0.701676);
v(1.067447, -0.492193, 0.696282);
v(1.068166, -0.467205, 0.711948);
v(1.051336, -0.435875, 0.820343);
v(0.921037, -0.367543, 0.68558);
v(0.913982, -0.365539, 0.705404);
v(0.905893, -0.368871, 0.72301);
v(0.896899, -0.376687, 0.738166);
v(0.883833, -0.391421, 0.75419);
v(0.860875, -0.421574, 0.770792);
v(0.835279, -0.456366, 0.770364);
v(0.82494, -0.47465, 0.758899);
v(0.819254, -0.49299, 0.74542);
v(0.821428, -0.516862, 0.709494);
v(0.830841, -0.525087, 0.681782);
v(0.855723, -0.525171, 0.642443);
v(0.886385, -0.508462, 0.611626);
v(0.907911, -0.481024, 0.595302);
v(0.919743, -0.461192, 0.590652);
v(0.926616, -0.444289, 0.591484);
v(0.931253, -0.427523, 0.597369);
v(0.933419, -0.411575, 0.608861);
v(0.933246, -0.397001, 0.624888);
v(0.93009, -0.385326, 0.642906);
v(0.926795, -0.374173, 0.664657);
v(0.742887, -0.998991, 0.13329);
v(0.760132, -1.021961, -0.06655);
v(0.779434, -0.960931, -0.361957);
v(0.704313, -0.953809, 0.333292);
v(0.245214, -0.560389, 1.133921);
v(0.538455, -0.817057, 0.732258);
v(0.090505, -0.381736, 1.325263);
v(0.641906, -0.888524, 0.533206);
v(0.75843, -0.032346, 0.002009);
v(0.823626, -0.208277, -0.143108);
v(0.845308, -0.380863, -0.261093);
v(0.845081, -0.576071, -0.373682);
v(0.587316, 0.206008, 0.169704);
v(0.518214, 0.254124, 0.14969);
v(0.349493, 0.318012, 0.023346);
v(0.178152, 0.287448, -0.4177);
v(0.145851, 0.2155, -0.614128);
v(0.863826, -0.731841, -0.291152);
v(0.820035, -0.778682, -0.436779);
v(0.126189, 0.093035, -0.79609);
v(0.263753, 0.324366, -0.140467);
v(0.211068, 0.312719, -0.27947);
v(0.643935, 0.141133, 0.152896);
v(0.863643, -0.780682, -0.197716);
v(0.829076, -0.839068, -0.366433);
v(-0.046814, 1.125335, 2.173375);
v(-0.064438, 1.337659, 2.773474);
v(-0.224928, -0.471851, 1.208598);
v(-0.395798, 1.183414, 2.932827);
v(-0.367088, 1.192274, 3.103895);
v(-0.403305, 1.023553, 3.183291);
v(-0.858665, -0.217897, 0.094249);
v(-0.845636, -0.824333, 0.129757);
v(-0.803795, -0.872914, 0.223737);
v(-0.8993, -0.477064, -0.072426);
v(-0.624347, 0.163445, 0.226728);
v(-0.607104, 0.190083, 0.322507);
v(-0.49711, 0.260267, 0.224072);
v(-0.5841, 0.20402, 0.989771);
v(-0.577105, 0.13855, 1.128675);
v(-0.46661, 0.2332, 1.381578);
v(-0.467986, 0.072435, 1.357909);
v(-0.448167, -0.103217, 1.304978);
v(-0.823553, -0.116989, 0.175022);
v(-0.715157, 0.058868, 0.253456);
v(-0.436329, 0.425748, 1.175275);
v(-0.65158, 0.136919, 0.768001);
v(-0.612416, 0.204807, 0.672867);
v(-0.387998, 0.482579, 1.187102);
v(-0.367541, 0.534989, 1.462499);
v(-0.094647, 0.685388, 3.572217);
v(-0.197895, 0.693764, 3.420946);
v(-0.087646, 0.642488, 3.434865);
v(-0.117653, 0.646893, 3.411933);
v(-0.037456, 0.637237, 3.456584);
v(-0.263935, 0.701791, 2.960119);
v(-0.376292, 0.84224, 3.129898);
v(-0.314758, 0.760643, 3.214571);
v(-0.42147, 0.308552, 0.247933);
v(-0.255435, 0.477107, 0.796049);
v(-0.349384, 0.451323, 0.876977);
v(-0.786607, -0.975409, -0.020092);
v(-0.900215, -0.62039, -0.119584);
v(-0.319325, -0.158057, 1.397809);
v(-0.368574, 0.006037, 1.464547);
v(-0.454223, 0.37488, 0.82802);
v(-0.129554, 0.50894, 0.787908);
v(-0.22334, 0.604653, 1.198423);
v(-0.112519, 0.624686, 1.147077);
v(-0.291467, 0.609846, 1.352273);
v(-0.214259, 0.699015, 1.434263);
v(-0.431216, 0.418358, 1.337594);
v(-0.324566, 0.609044, 1.492493);
v(-0.46365, 0.321173, 1.345166);
v(-0.402204, 0.362622, 1.5483);
v(-0.132012, 1.109818, 2.192115);
v(-0.255634, 0.84245, 1.852545);
v(-0.219402, 0.999844, 2.077962);
v(-0.275448, 0.726242, 1.6553);
v(-0.321093, 0.363417, 1.858902);
v(-0.349117, 0.502127, 1.897474);
v(-0.358706, 0.525125, 1.727642);
v(-0.323765, 0.485822, 2.078155);
v(-0.230486, 0.243228, 1.891316);
v(-0.250463, 0.365253, 2.058506);
v(-0.093877, 0.150828, 1.884731);
v(-0.175305, 0.269717, 2.002108);
v(-0.161422, 0.103987, 1.78031);
v(-0.360483, 0.673648, 2.079292);
v(-0.360712, 0.637299, 2.210104);
v(-0.318275, 0.946513, 2.170952);
v(-0.339465, 0.833935, 2.086359);
v(-0.343589, 1.119864, 2.482922);
v(-0.399522, 0.948168, 2.453653);
v(-0.331093, 0.635176, 2.403936);
v(-0.254515, 0.506219, 2.321944);
v(-0.135284, 0.40517, 2.263999);
v(-0.406977, 1.16211, 2.781049);
v(-0.293972, 1.256772, 3.174158);
v(-0.169338, 1.332908, 3.175714);
v(-0.252398, 1.310442, 3.112731);
v(-0.264149, 1.248147, 2.646102);
v(-0.271521, 1.180841, 2.511267);
v(-0.259671, 1.293641, 2.775862);
v(-0.066659, 1.362365, 2.949091);
v(-0.239864, 1.327004, 2.979891);
v(-0.430442, 1.023416, 2.88273);
v(-0.422475, 0.901401, 2.825579);
v(-0.346292, 0.774369, 2.931737);
v(-0.103279, 0.603325, 2.756957);
v(-0.156574, 0.648777, 2.977929);
v(-0.212038, 0.635439, 2.735701);
v(-0.319619, 0.714382, 2.752504);
v(-0.130533, 1.280781, 2.61256);
v(-0.04656, 1.295017, 2.610265);
v(-0.427688, 0.934754, 2.750678);
v(-0.375948, 0.737396, 2.474329);
v(-0.292425, 0.632798, 2.542927);
v(-0.136784, 0.526994, 2.5073);
v(-0.220587, 0.567485, 2.513998);
v(-0.08207, 1.365353, 3.148934);
v(-0.401403, 0.910259, 3.154748);
v(-0.340643, 1.213949, 3.155907);
v(-0.35198, 0.75483, 2.050314);
v(-0.34373, 0.616015, 1.770523);
v(-0.158282, 0.894048, 1.783548);
v(-0.106454, 0.731806, 1.404108);
v(-0.319971, 0.692756, 1.776338);
v(-0.370507, 0.411299, 1.670907);
v(-0.376567, 0.501954, 1.558377);
v(-0.384132, 0.22224, 1.560677);
v(-0.346663, 0.244004, 1.660755);
v(-0.284494, 0.221037, 1.767722);
v(-0.301195, 0.066759, 1.596295);
v(-0.229234, 0.071533, 1.680431);
v(-0.286865, 0.344936, 0.142838);
v(-0.106538, 0.37759, 0.120383);
v(-0.862641, -0.817914, -0.09469);
v(-0.758057, -0.819025, 0.418356);
v(-0.125735, 0.643147, 3.341845);
v(-0.235866, 0.693329, 3.224957);
v(-1.03166, -0.894512, 1.659176);
v(-1.021325, -0.922318, 1.653166);
v(-1.000531, -0.931855, 1.649833);
v(-0.974136, -0.922715, 1.649453);
v(-0.965518, -0.882118, 1.656228);
v(-0.997102, -0.861225, 1.66259);
v(-1.019891, -0.871562, 1.662427);
v(-0.990056, -0.901237, 1.753449);
v(-1.026405, -0.970649, 1.672224);
v(-0.995187, -0.994839, 1.643872);
v(-1.012846, -0.993221, 1.65364);
v(-0.953958, -0.998723, 1.74833);
v(-0.970553, -0.974156, 1.641832);
v(-0.965687, -0.930631, 1.661748);
v(-1.013434, -0.931115, 1.685945);
v(-0.986602, -0.915303, 1.680266);
v(-1.01604, -0.991944, 1.637101);
v(-1.019998, -1.011672, 1.611288);
v(-0.990398, -1.012139, 1.585343);
v(-0.962835, -0.988838, 1.596402);
v(-0.973567, -0.965843, 1.639393);
v(-0.958575, -0.970914, 1.619321);
v(-0.955055, -1.066177, 1.657637);
v(-0.996002, -0.973602, 1.646804);
v(-0.834769, -0.70743, 0.362318);
v(-0.425364, 1.03708, 2.731181);
v(-0.381888, 1.130222, 2.55746);
v(-0.415117, -0.469679, 1.111906);
v(-0.761808, -0.648824, 0.60286);
v(-0.498345, -0.705696, 0.872227);
v(-0.595177, -0.712009, 0.767903);
v(-0.23938, -0.222413, 1.404772);
v(-0.132144, -0.205078, 1.469186);
v(-0.13964, -0.051954, 1.61762);
v(-0.131968, 1.246115, 3.399005);
v(-0.282877, 1.251968, 3.204626);
v(-0.154402, 1.326713, 3.212447);
v(-0.365453, 1.220909, 3.093743);
v(-0.377063, 1.221865, 3.047918);
v(-0.38714, 1.220872, 3.002888);
v(-0.396269, 1.217903, 2.95501);
v(-0.305538, 1.321543, 3.010584);
v(-0.335415, 1.335958, 2.968258);
v(-0.360522, 1.362602, 2.963601);
v(-0.300511, 1.318725, 3.05911);
v(-0.298624, 1.308295, 3.100423);
v(-0.329678, 1.329604, 3.0785);
v(-0.356116, 1.357988, 3.066541);
v(-0.302801, 1.291956, 3.129685);
v(-0.339721, 1.321032, 3.114073);
v(-0.441096, 1.383994, 2.652208);
v(-0.390952, 1.306616, 2.662383);
v(-0.381962, 1.329529, 2.722106);
v(-0.360392, 1.267902, 2.656039);
v(-0.349853, 1.294428, 2.724561);
v(-0.322413, 1.233144, 2.630028);
v(-0.316676, 1.265272, 2.697515);
v(-0.312865, 1.287365, 2.760664);
v(-0.308914, 1.309288, 2.854871);
v(-0.340685, 1.322867, 2.847184);
v(-0.368555, 1.351146, 2.841355);
v(-0.306223, 1.320606, 2.952362);
v(-0.412889, 1.199909, 2.783136);
v(-0.433374, 1.253303, 2.794403);
v(-0.410783, 1.206827, 2.843627);
v(-0.404629, 1.213042, 2.901577);
v(-0.402252, 1.259113, 2.970082);
v(-0.377036, 1.250571, 2.627488);
v(-0.351597, 1.209275, 2.601922);
v(-0.420878, 1.289904, 2.624582);
v(-0.392048, 1.235976, 2.616371);
v(-0.405256, 1.225419, 2.626561);
v(-0.387163, 1.172451, 2.604478);
v(-0.410255, 1.304063, 2.63536);
v(-0.437559, 1.292336, 2.634233);
v(-0.510124, 1.47473, 2.611037);
v(-0.545887, 1.486967, 2.606039);
v(-0.458835, 1.438736, 2.678889);
v(-0.446461, 1.449279, 2.746445);
v(-0.438632, 1.469435, 2.860467);
v(-0.544183, 1.638481, 2.854942);
v(-0.422828, 1.273436, 2.906261);
v(-0.428943, 1.256203, 2.665313);
v(-0.436423, 1.258223, 2.713536);
v(-0.547409, 1.47102, 2.629731);
v(-0.626605, 1.609864, 2.6086);
v(-0.548664, 1.462266, 2.720721);
v(-0.545464, 1.486364, 2.792331);
v(-0.496663, 1.466701, 2.925302);
v(-0.468492, 1.477743, 3.004049);
v(-0.573221, 1.643879, 2.8753);
v(-0.574308, 1.660224, 2.872992);
v(-0.493987, 1.555094, 2.967864);
v(-0.554016, 1.648122, 2.780005);
v(-0.562081, 1.653062, 2.88049);
v(-0.552994, 1.618993, 2.682611);
v(-0.58858, 1.637736, 2.597649);
v(-0.614174, 1.612844, 2.566208);
v(-0.608612, 1.643189, 2.566555);
v(-0.607197, 1.620913, 2.563838);
v(-0.645747, 1.656493, 2.559299);
v(-0.585749, 1.638573, 2.84503);
v(-0.619493, 1.650721, 2.755589);
v(-0.326178, 1.273781, 3.134716);
v(-0.395244, 1.387173, 3.08092);
v(-0.345795, 1.252542, 3.122577);
v(-0.365918, 1.310779, 3.098969);
v(-0.39062, 1.326086, 3.061003);
v(-0.634132, 1.636628, 2.672963);
v(-0.410076, 1.313444, 3.001596);
v(-0.418857, 1.439276, 3.050264);
v(-0.474814, 1.510865, 3.001605);
v(-0.375021, 1.278866, 3.07426);
v(-0.400752, 1.183905, 2.661931);
v(-0.409502, 1.192608, 2.722017);
v(-0.569372, 1.670452, 2.853094);
v(-0.608065, 1.714405, 2.810516);
v(-0.631838, 1.740209, 2.666247);
v(-0.634836, 1.733023, 2.634268);
v(-0.656473, 1.711328, 2.530835);
v(-0.656048, 1.697749, 2.525044);
v(-0.662411, 1.695257, 2.523884);
v(-0.668321, 1.695136, 2.532875);
v(-0.681565, 1.75181, 2.654747);
v(-0.623836, 1.712518, 2.792975);
v(-0.613662, 1.713472, 2.809361);
v(-0.664677, 1.703275, 2.646612);
v(-0.566686, 1.548679, 2.584461);
v(-0.764321, 1.889888, 2.499512);
v(-0.727372, 1.79081, 2.445571);
v(-0.692342, 1.73995, 2.49024);
v(-0.725264, 1.792979, 2.468035);
v(-0.66411, 1.78551, 2.718494);
v(-0.70152, 1.785679, 2.560794);
v(-0.710403, 1.816629, 2.55729);
v(-0.720407, 1.820391, 2.552178);
v(-0.698701, 1.772667, 2.598447);
v(-0.722143, 1.815766, 2.574216);
v(-0.745538, 1.857976, 2.528326);
v(-0.684721, 1.736658, 2.495499);
v(-0.699081, 1.767645, 2.566216);
v(-0.739024, 1.85922, 2.526545);
v(-0.760222, 1.890482, 2.502056);
v(-0.747423, 1.882305, 2.53676);
v(-0.765415, 1.885909, 2.510188);
v(-0.75382, 1.871732, 2.549993);
v(-0.725516, 1.858459, 2.613132);
v(-0.685018, 1.718751, 2.533774);
v(-0.694325, 1.737271, 2.498112);
v(-0.732539, 1.869113, 2.587071);
v(-0.67063, 1.787624, 2.712745);
v(-0.686363, 1.780539, 2.574228);
v(-0.695572, 1.809339, 2.575191);
v(-0.615591, 1.728183, 2.720552);
v(-0.682134, 1.767641, 2.675971);
v(-0.681566, 1.790424, 2.69284);
v(-0.651016, 1.717832, 2.552359);
v(-0.667774, 1.745151, 2.555365);
v(-0.68676, 1.770257, 2.558101);
v(-0.708868, 1.784899, 2.526522);
v(-0.677249, 1.707258, 2.575122);
v(-0.732488, 1.794922, 2.441735);
v(-0.724924, 1.789506, 2.472788);
v(-0.629383, 1.74754, 2.754111);
v(-0.684763, 1.732715, 2.592608);
v(-0.66024, 1.75677, 2.601193);
v(-0.785055, 1.922307, 2.479112);
v(-0.505147, 1.438557, 2.609363);
v(-0.468342, 1.373502, 2.617767);
v(-0.385092, 1.167695, 3.038046);
v(-0.397505, 1.150912, 2.661667);
v(-0.372085, 1.189212, 2.59179);
v(-0.874903, -0.275115, 0.254293);
v(-0.828177, -0.129414, 0.362516);
v(-0.813388, -0.094175, 0.405178);
v(-0.781944, -0.031838, 0.519221);
v(-0.760164, -0.001098, 0.572902);
v(-0.767087, 0.000946, 0.624009);
v(-0.578308, 0.10992, 1.153846);
v(-0.620146, 0.127567, 1.038538);
v(-0.54574, 0.060718, 1.234042);
v(-0.556302, 0.081673, 1.213191);
v(-0.567426, 0.097332, 1.185752);
v(-0.52166, -0.037189, 1.251004);
v(-0.528393, -0.000357, 1.251983);
v(-0.536404, 0.032944, 1.246745);
v(-0.514378, -0.15575, 1.214467);
v(-0.513539, -0.115487, 1.232781);
v(-0.516372, -0.075808, 1.244728);
v(-0.56112, -0.284849, 1.106755);
v(-0.536281, -0.238146, 1.154526);
v(-0.521187, -0.19446, 1.190468);
v(-0.688985, -0.462989, 0.864661);
v(-0.727078, -0.521865, 0.753922);
v(-0.776287, -0.58566, 0.616147);
v(-0.548925, -0.129965, 1.200903);
v(-0.559011, 0.012803, 1.221728);
v(-0.624537, -0.406821, 0.965245);
v(-0.848643, -0.616952, 0.404888);
v(-0.877485, -0.607947, 0.326994);
v(-0.863802, -0.614645, 0.363794);
v(-0.90917, -0.404643, 0.212227);
v(-0.901264, -0.3647, 0.221434);
v(-0.789518, -0.597155, 0.579394);
v(-0.830283, -0.528446, 0.663717);
v(-0.797408, -0.585481, 0.580601);
v(-0.877372, -0.271889, 0.280097);
v(-0.85729, -0.210643, 0.325511);
v(-0.834969, -0.143245, 0.386697);
v(-0.812439, -0.083656, 0.468837);
v(-0.796441, -0.036257, 0.575444);
v(-0.920167, -0.465918, 0.568286);
v(-0.935667, -0.426306, 0.561886);
v(-0.889876, -0.362455, 0.753316);
v(-0.884115, -0.285814, 0.80305);
v(-0.741684, -0.421971, 0.889015);
v(-0.810862, -0.468548, 0.775261);
v(-0.809493, -0.504127, 0.730481);
v(-0.895651, -0.499389, 0.589027);
v(-0.916584, -0.305348, 0.312232);
v(-0.905368, -0.254961, 0.351988);
v(-0.890293, -0.211623, 0.385672);
v(-0.855385, -0.182606, 0.370221);
v(-0.739383, 0.057288, 0.926604);
v(-0.70041, 0.085586, 0.952974);
v(-0.67854, 0.103214, 0.878759);
v(-0.656985, 0.066336, 1.109773);
v(-0.622597, 0.072046, 1.145273);
v(-0.594629, 0.105073, 1.128);
v(-0.679455, 0.08917, 1.020819);
v(-0.628903, 0.116788, 1.048222);
v(-0.622447, -0.302993, 1.061953);
v(-0.625155, -0.24026, 1.118039);
v(-0.590613, -0.261072, 1.108182);
v(-0.566628, -0.209653, 1.152549);
v(-0.872478, -0.169384, 0.424382);
v(-0.831571, -0.110659, 0.462664);
v(-0.775938, 0.015086, 0.710559);
v(-0.74072, 0.05805, 0.812838);
v(-0.805638, -0.534702, 0.669257);
v(-0.759273, -0.519433, 0.729842);
v(-0.774933, -0.566662, 0.638675);
v(-0.541973, -0.061958, 1.228057);
v(-0.559969, -0.067591, 1.218615);
v(-0.553119, -0.016942, 1.226671);
v(-0.577196, 0.047835, 1.199898);
v(-0.565283, 0.054097, 1.207882);
v(-0.581113, 0.080685, 1.171988);
v(-0.631754, -0.343578, 1.0179);
v(-0.859025, -0.608348, 0.398478);
v(-0.912797, -0.559256, 0.358695);
v(-0.891796, -0.579389, 0.399517);
v(-0.89198, -0.588353, 0.323925);
v(-0.924939, -0.538472, 0.310229);
v(-0.941006, -0.492958, 0.308883);
v(-0.941364, -0.404647, 0.291867);
v(-0.917041, -0.510078, 0.216801);
v(-0.924819, -0.368031, 0.270685);
v(-0.903974, -0.346389, 0.247498);
v(-0.636575, 0.126536, 0.985026);
v(-0.695576, 0.087371, 0.817364);
v(-0.864645, -0.565591, 0.524263);
v(-0.835367, -0.612224, 0.449225);
v(-0.814821, -0.590077, 0.548294);
v(-0.625683, -0.131449, 1.178993);
v(-0.588875, -0.147725, 1.184611);
v(-0.631096, -0.065286, 1.191244);
v(-0.589065, -0.078826, 1.208847);
v(-0.636608, -0.02129, 1.18511);
v(-0.593187, -0.015896, 1.211291);
v(-0.617642, 0.0291, 1.183381);
v(-0.667701, -0.269535, 1.080558);
v(-0.672763, -0.19711, 1.124286);
v(-0.633362, -0.191483, 1.147469);
v(-0.672556, -0.124003, 1.152615);
v(-0.895677, -0.540194, 0.507163);
v(-0.918142, -0.53254, 0.443615);
v(-0.681457, -0.06295, 1.151832);
v(-0.663781, -0.00736, 1.15795);
v(-0.937326, -0.511305, 0.368613);
v(-0.715931, -0.002637, 1.090599);
v(-0.667877, 0.02895, 1.134913);
v(-0.953739, -0.441309, 0.37446);
v(-0.943917, -0.451847, 0.295043);
v(-0.953481, -0.390838, 0.363088);
v(-0.712497, 0.041624, 1.052242);
v(-0.667686, 0.076643, 1.078186);
v(-0.707164, 0.066493, 1.012269);
v(-0.936106, -0.342333, 0.324053);
v(-0.673135, -0.34846, 1.00576);
v(-0.716944, -0.329544, 1.001364);
v(-0.721122, -0.277992, 1.040109);
v(-0.752869, -0.226796, 1.040306);
v(-0.711324, -0.189211, 1.098285);
v(-0.768974, -0.168286, 1.041186);
v(-0.919292, -0.501738, 0.511994);
v(-0.723879, -0.127606, 1.104005);
v(-0.769389, -0.10145, 1.044259);
v(-0.721963, -0.060641, 1.106337);
v(-0.943142, -0.47244, 0.456896);
v(-0.951945, -0.424341, 0.463931);
v(-0.763238, -0.040976, 1.032927);
v(-0.956848, -0.392003, 0.417303);
v(-0.955002, -0.35667, 0.484959);
v(-0.951837, -0.315487, 0.468641);
v(-0.757718, 0.006494, 1.000006);
v(-0.758826, 0.027919, 0.954175);
v(-0.942664, -0.301311, 0.406053);
v(-0.917588, -0.238823, 0.411164);
v(-0.920154, -0.20898, 0.495797);
v(-0.775275, 0.026974, 0.878821);
v(-0.746007, 0.056767, 0.857242);
v(-0.89569, -0.163709, 0.501136);
v(-0.708648, -0.37932, 0.957518);
v(-0.7574, -0.312618, 0.982742);
v(-0.791338, -0.268359, 0.973297);
v(-0.810742, -0.213323, 0.968521);
v(-0.813703, -0.147166, 0.971408);
v(-0.848965, -0.13242, 0.885508);
v(-0.807993, -0.084623, 0.963956);
v(-0.947372, -0.369436, 0.552765);
v(-0.946883, -0.314622, 0.560582);
v(-0.929003, -0.239704, 0.633821);
v(-0.840474, -0.078441, 0.863886);
v(-0.800852, -0.03397, 0.936519);
v(-0.841269, -0.053431, 0.798324);
v(-0.806863, -0.012828, 0.86496);
v(-0.936966, -0.251244, 0.502381);
v(-0.924266, -0.207707, 0.582891);
v(-0.792108, 0.012219, 0.769876);
v(-0.812123, -0.019584, 0.674861);
v(-0.856698, -0.094643, 0.555402);
v(-0.764665, -0.385409, 0.91143);
v(-0.796672, -0.36217, 0.900945);
v(-0.863834, -0.331147, 0.824007);
v(-0.824427, -0.310931, 0.902126);
v(-0.847404, -0.260398, 0.889611);
v(-0.853708, -0.196415, 0.889778);
v(-0.890859, -0.222477, 0.793817);
v(-0.895153, -0.17734, 0.756569);
v(-0.868384, -0.125296, 0.813103);
v(-0.932896, -0.302878, 0.647217);
v(-0.878466, -0.11641, 0.744705);
v(-0.904056, -0.160796, 0.663596);
v(-0.894663, -0.137102, 0.624772);
v(-0.862335, -0.078249, 0.705589);
v(-0.830713, -0.031235, 0.735673);
v(-0.872648, -0.100383, 0.61626);
v(-0.835306, -0.055964, 0.613792);
v(-0.842841, -0.527398, 0.644544);
v(-0.865591, -0.521561, 0.616554);
v(-0.815145, -0.517029, 0.703705);
v(-0.821096, -0.524397, 0.683653);
v(-0.840794, -0.427112, 0.784802);
v(-0.865212, -0.396709, 0.775706);
v(-0.913047, -0.341322, 0.709377);
v(-0.929705, -0.363415, 0.647591);
v(-0.861239, -0.230022, 0.261739);
v(-0.846212, -0.179982, 0.276919);
v(-0.828139, -0.130011, 0.303541);
v(-0.797822, -0.062399, 0.457388);
v(-0.712648, 0.058019, 0.55738);
v(-0.728244, 0.050171, 0.715988);
v(-0.588659, 0.120225, 1.121147);
v(-0.519663, 0.151145, 1.275475);
v(-0.477855, -0.207208, 1.221693);
v(-0.462952, -0.340725, 1.154373);
v(-0.583663, -0.346136, 1.045556);
v(-0.613687, -0.499925, 0.905771);
v(-0.63704, -0.56504, 0.828839);
v(-0.749758, -0.553785, 0.690404);
v(-0.807454, -0.684387, 0.458428);
v(-0.869499, -0.677932, 0.254918);
v(-0.906688, -0.477737, 0.126873);
v(-0.907148, -0.562412, 0.245752);
v(-0.91493, -0.442242, 0.208543);
v(-0.889513, -0.597031, 0.294868);
v(-0.804745, -0.605106, 0.536472);
v(-0.890332, -0.322718, 0.237355);
v(-0.889098, -0.348768, 0.138046);
v(-0.797568, -0.069783, 0.301496);
v(-0.657811, -0.392698, 0.954739);
v(-0.734001, -0.481616, 0.809551);
v(-0.696745, -0.422254, 0.911308);
v(-1.104261, -0.478608, 0.678322);
v(-1.104987, -0.534961, 0.679344);
v(-1.09732, -0.451643, 0.711166);
v(-1.095571, -0.434055, 0.750507);
v(-1.083648, -0.424645, 0.853854);
v(-1.096292, -0.705844, 0.801549);
v(-1.072732, -0.434062, 0.936245);
v(-1.089011, -0.766375, 0.875488);
v(-1.064094, -0.675662, 0.773321);
v(-1.004734, -0.741687, 1.570536);
v(-1.011924, -0.688813, 1.507103);
v(-1.000015, -0.799918, 1.628094);
v(-1.018548, -1.022982, 1.521337);
v(-1.028576, -1.013499, 1.435585);
v(-0.996527, -0.857439, 1.669959);
v(-0.995074, -0.9125, 1.69269);
v(-1.002349, -1.002832, 1.650123);
v(-0.966515, -0.888315, 1.674715);
v(-0.958683, -0.980565, 1.639023);
v(-0.995581, -0.96875, 1.694231);
v(-0.926816, -0.872975, 1.563779);
v(-1.009475, -1.019655, 1.593421);
v(-0.982655, -1.013668, 1.503729);
v(-0.970799, -0.755401, 1.569064);
v(-1.058131, -0.932467, 1.170754);
v(-1.019953, -0.892804, 1.10187);
v(-0.991012, -0.557747, 1.259233);
v(-1.06961, -0.882111, 1.063588);
v(-1.031552, -0.565508, 1.308656);
v(-1.043031, -0.515153, 1.201492);
v(-1.106754, -0.590824, 0.702754);
v(-1.056463, -0.468207, 1.078831);
v(-1.084342, -0.800503, 0.922188);
v(-1.025527, -0.779726, 0.925886);
v(-0.956473, -0.637619, 0.986771);
v(-0.978805, -0.72021, 0.949484);
v(-0.964873, -0.554148, 1.027765);
v(-1.001408, -0.492246, 1.061402);
v(-1.016821, -0.647116, 1.450056);
v(-1.0447, -0.979412, 1.293413);
v(-0.961766, -0.671156, 1.432628);
v(-0.916832, -0.816529, 1.357997);
v(-0.925231, -0.733057, 1.39899);
v(-0.939163, -0.899119, 1.320709);
v(-0.985885, -0.958636, 1.297111);
v(-0.996365, -0.5016, 1.091329);
v(-0.958749, -0.565332, 1.056696);
v(-0.950101, -0.651271, 1.014491);
v(-0.973093, -0.736304, 0.976101);
v(-1.021197, -0.79758, 0.951805);
v(-0.96273, -0.653399, 1.406302);
v(-0.925115, -0.717131, 1.37167);
v(-0.916467, -0.80307, 1.329465);
v(-0.939459, -0.888103, 1.291075);
v(-0.987562, -0.949379, 1.266779);
v(-1.019412, -0.628648, 1.424246);
v(-1.048116, -0.97077, 1.262972);
v(-1.08175, -0.818971, 0.947998);
v(-1.053047, -0.476849, 1.109273);
v(-0.975812, -0.590992, 0.89431);
v(-1.001299, -0.48177, 0.917418);
v(-1.015368, -0.677101, 0.829846);
v(-1.043303, -0.641973, 0.760711);
v(-1.067759, -0.566302, 0.700077);
v(-1.059508, -0.446849, 0.752712);
v(-1.029389, -0.448065, 0.846832);
v(-1.045054, -0.444121, 0.952491);
v(-1.04213, -0.438984, 0.857759);
v(-0.941176, -0.766874, 1.520666);
v(-0.918992, -0.809478, 1.446252);
v(-0.927449, -0.905773, 1.452479);
v(-0.935007, -0.935858, 1.534004);
v(-0.958426, -0.95632, 1.379928);
v(-1.008781, -0.994419, 1.367006);
v(-0.839215, -0.527411, 0.665197);
v(-0.980902, -0.52582, 0.878413);
v(-0.974312, -0.576871, 0.862749);
v(-1.026288, -0.627375, 0.759115);
v(-1.03902, -0.600721, 0.728609);
v(-1.05259, -0.472879, 0.717977);
v(-1.041666, -0.448821, 0.763595);
v(-0.990131, -0.623266, 0.788344);
v(-0.835588, -0.524361, 0.712906);
v(-0.974969, -0.611838, 0.816688);
v(-0.996224, -0.486709, 0.873512);
v(-0.984577, -0.618129, 0.841751);
v(-1.053043, -0.508546, 0.699888);
v(-1.050433, -0.462031, 0.734138);
v(-1.013852, -0.461964, 0.840929);
v(-0.941236, -0.448008, 0.62393);
v(-1.040941, -0.479765, 0.711139);
v(-1.035013, -0.462846, 0.721939);
v(-0.942566, -0.398088, 0.669488);
v(-0.938616, -0.417299, 0.632164);
v(-1.027586, -0.448713, 0.774077);
v(-0.932299, -0.389698, 0.703301);
v(-1.035236, -0.453535, 0.747986);
v(-0.926501, -0.379942, 0.687447);
v(-1.008042, -0.451737, 0.803977);
v(-0.910504, -0.3903, 0.730497);
v(-0.893521, -0.405632, 0.753751);
v(-0.977051, -0.4942, 0.84712);
v(-0.990582, -0.470333, 0.831437);
v(-0.879445, -0.424265, 0.767741);
v(-0.858885, -0.453127, 0.772093);
v(-1.004701, -0.473195, 0.859375);
v(-0.964817, -0.55198, 0.854506);
v(-0.85177, -0.483657, 0.768766);
v(-0.968552, -0.520685, 0.854308);
v(-0.96751, -0.588116, 0.841444);
v(-0.834002, -0.505258, 0.741168);
v(-1.003419, -0.616081, 0.75359);
v(-1.025617, -0.599817, 0.729209);
v(-0.890541, -0.516856, 0.628007);
v(-0.927207, -0.46231, 0.613039);
v(-1.035113, -0.506233, 0.694507);
v(-1.031777, -0.544215, 0.695859);
v(-1.032632, -0.574665, 0.71101);
v(-0.912636, -0.491048, 0.614806);
v(-1.000309, -0.644219, 0.814769);
v(-1.018047, -0.639093, 0.779081);
v(-1.052256, -0.552368, 0.701676);
v(-1.067447, -0.492193, 0.696282);
v(-1.068166, -0.467205, 0.711948);
v(-1.051336, -0.435875, 0.820343);
v(-0.921037, -0.367543, 0.68558);
v(-0.913982, -0.365539, 0.705404);
v(-0.905893, -0.368871, 0.72301);
v(-0.896899, -0.376687, 0.738166);
v(-0.883833, -0.391421, 0.75419);
v(-0.860875, -0.421574, 0.770792);
v(-0.835279, -0.456366, 0.770364);
v(-0.82494, -0.47465, 0.758899);
v(-0.819254, -0.49299, 0.74542);
v(-0.821428, -0.516862, 0.709494);
v(-0.830841, -0.525087, 0.681782);
v(-0.855723, -0.525171, 0.642443);
v(-0.886385, -0.508462, 0.611626);
v(-0.907911, -0.481024, 0.595302);
v(-0.919743, -0.461192, 0.590652);
v(-0.926616, -0.444289, 0.591484);
v(-0.931253, -0.427523, 0.597369);
v(-0.933419, -0.411575, 0.608861);
v(-0.933246, -0.397001, 0.624888);
v(-0.93009, -0.385326, 0.642906);
v(-0.926795, -0.374173, 0.664657);
v(-0.742887, -0.998991, 0.13329);
v(-0.704313, -0.953809, 0.333292);
v(-0.245214, -0.560389, 1.133921);
v(-0.40358, -0.712669, 0.93354);
v(-0.538455, -0.817057, 0.732258);
v(-0.090505, -0.381736, 1.325263);
v(-0.641906, -0.888524, 0.533206);
v(-0.75843, -0.032346, 0.002009);
v(-0.823626, -0.208277, -0.143108);
v(-0.845308, -0.380863, -0.261093);
v(-0.845081, -0.576071, -0.373682);
v(-0.587316, 0.206008, 0.169704);
v(-0.518214, 0.254124, 0.14969);
v(-0.349493, 0.318012, 0.023346);
v(-0.178152, 0.287448, -0.4177);
v(-0.145851, 0.2155, -0.614128);
v(-0.863826, -0.731841, -0.291152);
v(-0.820035, -0.778682, -0.436779);
v(-0.126189, 0.093035, -0.79609);
v(-0.263753, 0.324366, -0.140467);
v(-0.211068, 0.312719, -0.27947);
v(-0.643935, 0.141133, 0.152896);
v(-0.863643, -0.780682, -0.197716);
v(-0.829076, -0.839068, -0.366433);
v(0, 1.354173, 3.214158);
v(0, 1.11186, 3.577896);
v(0, -0.29411, 1.417028);
v(0, 0.197865, -0.670407);
v(0, 0.293455, -0.437961);
v(0, 0.336411, -0.246087);
v(0, 0.395073, 0.182212);
v(0, 0.505817, 0.72758);
v(0, 0.580165, 0.990961);
v(0, 0.718524, 1.346274);
v(0, 0.935976, 1.774689);
v(0, 1.371811, 3.138026);
v(0, 1.270211, 3.399992);
v(0, 0.661863, 3.558275);
v(0, 0.636276, 3.461871);
v(0, 0.624032, 3.223447);
v(0, 0.62474, 2.995059);
v(0, 0.408852, 2.316719);
v(0, 0.229989, 2.025713);
v(0, 0.072773, 1.795588);
v(0, -0.117126, 1.570698);
v(0, 0.514245, 2.524928);
v(0, 0.601624, 2.800028);
v(0, 0.753448, 3.72627);
v(0, 0.706212, 3.662226);
v(-0.064162, 0.682142, 3.598635);
v(0, 0.76688, 3.733641);
v(-0.099014, 0.742271, 3.658124);
v(-0.124131, 0.796747, 3.665851);
v(0, 1.13684, 2.199991);
v(0, 1.29162, 2.59999);
v(0, 1.358046, 2.898139);
v(0.40358, -0.712669, 0.93354);
v(0.331132, 1.066965, 3.41222);
v(0.332027, 1.077936, 3.393457);
v(0.316536, 0.843312, 3.442919);
v(0.36628, 0.967616, 3.345458);
v(0.291206, 0.842774, 3.501906);
v(0.359593, 1.000829, 3.379836);
v(0.364387, 0.955139, 3.372185);
v(0.34836, 1.03866, 3.394109);
v(0.361877, 0.915586, 3.371029);
v(0.343212, 0.868673, 3.380402);
v(0.366814, 0.941222, 3.343815);
v(0.357249, 0.896643, 3.359147);
v(0.34784, 1.048287, 3.372696);
v(0.30747, 1.096933, 3.428099);
v(0.273713, 0.858292, 3.54597);
v(-0.331132, 1.066965, 3.41222);
v(-0.332027, 1.077936, 3.393457);
v(-0.316536, 0.843312, 3.442919);
v(-0.36628, 0.967616, 3.345458);
v(-0.291206, 0.842774, 3.501906);
v(-0.359593, 1.000829, 3.379836);
v(-0.364387, 0.955139, 3.372185);
v(-0.34836, 1.03866, 3.394109);
v(-0.361877, 0.915586, 3.371029);
v(-0.343212, 0.868673, 3.380402);
v(-0.366814, 0.941222, 3.343815);
v(-0.357249, 0.896643, 3.359147);
v(-0.34784, 1.048287, 3.372696);
v(-0.30747, 1.096933, 3.428099);
v(-0.273713, 0.858292, 3.54597);
v(0, 0.971928, 3.665738);
v(-0.163451, 1.060346, 3.572802);
v(-0.192929, 1.102495, 3.522398);
v(-0.250055, 1.176705, 3.395227);
v(-0.366058, 1.143878, 3.197206);
v(-0.400967, 0.991577, 3.204843);
v(-0.353952, 0.848555, 3.308008);
v(-0.25854, 0.740024, 3.407919);
v(-0.197654, 0.743672, 3.549311);
v(-0.209067, 0.829329, 3.607319);
v(0.77077, -0.99754, -0.310849);
v(0.762858, -1.025169, -0.195877);
v(0, 0.632088, 3.441719);
v(-0.77077, -0.99754, -0.310849);
v(-0.762858, -1.025169, -0.195877);
v(-0.779434, -0.960931, -0.361957);
v(-0.760132, -1.021961, -0.06655);
v(-0.808684, -0.956524, -0.148483);
v(0.064796, 0.635654, 3.431525);
v(0.018704, 0.631805, 3.442718);
v(-0.018704, 0.631805, 3.442718);
v(-0.064796, 0.635654, 3.431525);
f2(1426, 1406, 1416);
f2(1426, 1425, 1406);
f2(1425, 1424, 1406);
f2(1406, 1424, 1404);
f2(1404, 1424, 1411);
f2(1424, 1423, 1411);
f2(1411, 1423, 1413);
f2(1422, 1412, 1423);
f2(1413, 1423, 1412);
f2(1410, 1411, 1413);
f2(1410, 1413, 1412);
f2(1408, 1410, 1412);
f2(1405, 1408, 1412);
f2(1405, 1414, 1407);
f2(1414, 1402, 1409);
f2(1405, 1407, 1408);
f2(1414, 1409, 1407);
f2(1403, 1402, 1414);
f2(1403, 1415, 1402);
f2(1391, 156, 1401);
f2(7, 156, 1391);
f2(27, 7, 1391);
f2(27, 1391, 1389);
f2(27, 1389, 1396);
f2(99, 27, 1396);
f2(99, 1396, 1398);
f2(1397, 161, 99);
f2(99, 1398, 1397);
f2(1396, 1395, 1398);
f2(1398, 1395, 1397);
f2(1395, 1393, 1397);
f2(1393, 1390, 1397);
f2(1399, 1390, 1392);
f2(1387, 1399, 1394);
f2(1392, 1390, 1393);
f2(1394, 1399, 1392);
f2(1387, 1388, 1399);
f2(1400, 1388, 1387);
f2(684, 1364, 1383);
f2(1364, 0, 1383);
f2(773, 684, 1384);
f2(684, 1383, 1384);
f2(1383, 0, 1384);
f2(0, 93, 1384);
f2(685, 773, 1384);
f2(1, 1384, 93);
f2(685, 1385, 763);
f2(685, 1384, 1385);
f2(1385, 1384, 1);
f2(1, 83, 1385);
f2(83, 1365, 1385);
f2(1365, 763, 1385);
f2(1380, 157, 1377);
f2(1382, 1380, 1377);
f2(769, 1376, 0x0300);
f2(157, 6, 1377);
f2(1377, 6, 119);
f2(119, 1378, 1377);
f2(1381, 1382, 1377);
f2(1381, 1377, 1379);
f2(1378, 1379, 1377);
f2(769, 1370, 1376);
f2(1370, 89, 1376);
f2(1376, 89, 88);
f2(88, 1375, 1376);
f2(1375, 0x0300, 1376);
f2(675, 1357, 678);
f2(1358, 1357, 675);
f2(674, 1358, 675);
f2(1359, 1358, 674);
f2(1359, 674, 680);
f2(116, 1359, 679);
f2(1359, 680, 679);
f2(116, 679, 673);
f2(115, 116, 673);
f2(115, 673, 672);
f2(14, 115, 672);
f2(14, 672, 671);
f2(12, 14, 671);
f2(12, 671, 681);
f2(21, 12, 681);
f2(21, 681, 667);
f2(20, 21, 667);
f2(8, 20, 667);
f2(8, 667, 668);
f2(11, 8, 668);
f2(11, 668, 669);
f2(41, 11, 669);
f2(41, 669, 670);
f2(41, 676, 682);
f2(676, 41, 670);
f2(670, 677, 676);
f2(117, 41, 682);
f2(682, 676, 683);
f2(39, 117, 682);
f2(39, 682, 661);
f2(660, 40, 39);
f2(10, 9, 40);
f2(660, 659, 40);
f2(40, 659, 10);
f2(10, 659, 662);
f2(662, 118, 10);
f2(662, 666, 118);
f2(664, 152, 666);
f2(664, 151, 152);
f2(664, 1386, 151);
f2(1386, 149, 151);
f2(1386, 2, 149);
f2(1386, 663, 2);
f2(663, 665, 2);
f2(478, 587, 649);
f2(478, 333, 587);
f2(333, 648, 587);
f2(333, 481, 648);
f2(481, 480, 648);
f2(597, 618, 573);
f2(618, 601, 578);
f2(573, 618, 578);
f2(578, 601, 637);
f2(637, 601, 593);
f2(637, 593, 577);
f2(580, 578, 637);
f2(517, 580, 637);
f2(637, 577, 516);
f2(516, 517, 637);
f2(636, 635, 515);
f2(636, 592, 635);
f2(515, 577, 636);
f2(577, 592, 636);
f2(577, 593, 600);
f2(577, 600, 592);
f2(592, 599, 635);
f2(635, 599, 576);
f2(599, 634, 576);
f2(576, 634, 591);
f2(575, 576, 591);
f2(575, 591, 590);
f2(575, 590, 633);
f2(574, 575, 633);
f2(633, 632, 574);
f2(632, 598, 574);
f2(574, 598, 572);
f2(598, 589, 572);
f2(589, 588, 572);
f2(572, 588, 573);
f2(588, 597, 573);
f2(634, 629, 630);
f2(631, 650, 626);
f2(631, 651, 650);
f2(631, 626, 625);
f2(631, 625, 630);
f2(629, 631, 630);
f2(627, 651, 631);
f2(627, 652, 651);
f2(627, 653, 652);
f2(654, 653, 627);
f2(606, 654, 627);
f2(602, 606, 627);
f2(599, 629, 634);
f2(599, 628, 629);
f2(628, 627, 629);
f2(628, 602, 627);
f2(629, 627, 631);
f2(626, 650, 649);
f2(625, 624, 590);
f2(590, 624, 633);
f2(625, 649, 624);
f2(625, 626, 649);
f2(622, 598, 596);
f2(645, 620, 623);
f2(646, 645, 623);
f2(646, 623, 647);
f2(647, 623, 595);
f2(623, 620, 619);
f2(623, 619, 622);
f2(595, 623, 596);
f2(623, 622, 596);
f2(621, 597, 619);
f2(643, 616, 644);
f2(644, 616, 617);
f2(644, 617, 645);
f2(617, 620, 645);
f2(617, 614, 621);
f2(620, 617, 619);
f2(617, 621, 619);
f2(614, 597, 621);
f2(614, 618, 597);
f2(615, 618, 614);
f2(643, 613, 616);
f2(642, 613, 643);
f2(616, 613, 615);
f2(616, 615, 614);
f2(616, 614, 617);
f2(611, 601, 615);
f2(615, 601, 618);
f2(611, 607, 601);
f2(640, 610, 612);
f2(640, 639, 610);
f2(612, 610, 608);
f2(641, 640, 612);
f2(642, 612, 613);
f2(642, 641, 612);
f2(612, 608, 607);
f2(612, 607, 611);
f2(613, 612, 611);
f2(613, 611, 615);
f2(609, 604, 600);
f2(610, 658, 657);
f2(610, 657, 605);
f2(638, 658, 610);
f2(608, 610, 605);
f2(639, 638, 610);
f2(609, 605, 604);
f2(607, 608, 605);
f2(607, 605, 609);
f2(655, 654, 606);
f2(657, 656, 606);
f2(656, 655, 606);
f2(605, 657, 606);
f2(600, 604, 603);
f2(603, 628, 599);
f2(605, 606, 604);
f2(604, 606, 603);
f2(603, 602, 628);
f2(603, 606, 602);
f2(607, 593, 601);
f2(593, 607, 609);
f2(593, 609, 600);
f2(592, 600, 603);
f2(592, 603, 599);
f2(591, 630, 625);
f2(634, 630, 591);
f2(591, 625, 590);
f2(596, 598, 632);
f2(622, 589, 598);
f2(619, 589, 622);
f2(597, 588, 619);
f2(619, 588, 589);
f2(594, 596, 632);
f2(594, 632, 633);
f2(624, 594, 633);
f2(649, 587, 624);
f2(624, 587, 594);
f2(647, 595, 648);
f2(595, 596, 594);
f2(648, 595, 594);
f2(587, 648, 594);
f2(581, 530, 533);
f2(530, 581, 536);
f2(585, 584, 535);
f2(585, 583, 584);
f2(581, 553, 536);
f2(536, 553, 523);
f2(526, 586, 535);
f2(585, 535, 586);
f2(526, 552, 586);
f2(552, 557, 586);
f2(557, 585, 586);
f2(557, 556, 585);
f2(556, 583, 585);
f2(531, 535, 584);
f2(533, 531, 584);
f2(583, 533, 584);
f2(582, 533, 583);
f2(583, 556, 554);
f2(554, 582, 583);
f2(581, 533, 582);
f2(555, 581, 582);
f2(554, 555, 582);
f2(581, 555, 553);
f2(553, 551, 523);
f2(518, 521, 520);
f2(532, 529, 531);
f2(531, 530, 532);
f2(530, 528, 532);
f2(530, 527, 528);
f2(530, 524, 527);
f2(533, 530, 531);
f2(535, 534, 525);
f2(531, 529, 534);
f2(535, 531, 534);
f2(536, 524, 530);
f2(522, 524, 536);
f2(526, 535, 525);
f2(523, 522, 536);
f2(542, 541, 539);
f2(540, 538, 537);
f2(571, 542, 539);
f2(558, 571, 539);
f2(568, 563, 539);
f2(568, 539, 541);
f2(558, 539, 563);
f2(563, 559, 558);
f2(559, 563, 564);
f2(564, 560, 559);
f2(560, 564, 565);
f2(565, 561, 560);
f2(561, 565, 566);
f2(566, 562, 561);
f2(562, 566, 567);
f2(538, 570, 562);
f2(570, 538, 540);
f2(562, 567, 538);
f2(537, 538, 567);
f2(567, 569, 537);
f2(546, 545, 520);
f2(521, 546, 520);
f2(0x0202, 513, 635);
f2(0x0202, 635, 576);
f2(543, 0x0202, 576);
f2(575, 543, 576);
f2(543, 575, 521);
f2(521, 518, 543);
f2(521, 575, 574);
f2(546, 521, 574);
f2(574, 548, 546);
f2(574, 572, 548);
f2(572, 547, 548);
f2(572, 573, 547);
f2(573, 549, 547);
f2(573, 550, 549);
f2(550, 573, 579);
f2(544, 550, 579);
f2(544, 579, 519);
f2(519, 579, 517);
f2(580, 517, 579);
f2(573, 578, 580);
f2(573, 580, 579);
f2(515, 635, 513);
f2(516, 577, 515);
f2(506, 391, 500);
f2(392, 391, 506);
f2(392, 390, 391);
f2(326, 510, 321);
f2(326, 377, 510);
f2(377, 418, 510);
f2(418, 442, 510);
f2(510, 442, 0x0200);
f2(442, 344, 0x0200);
f2(0x0200, 344, 511);
f2(344, 346, 511);
f2(511, 346, 369);
f2(369, 322, 511);
f2(322, 321, 511);
f2(0x0200, 511, 321);
f2(321, 510, 0x0200);
f2(303, 489, 509);
f2(21, 509, 489);
f2(20, 509, 21);
f2(509, 302, 303);
f2(488, 302, 509);
f2(20, 488, 509);
f2(20, 487, 488);
f2(486, 20, 8);
f2(20, 486, 487);
f2(486, 8, 301);
f2(8, 507, 301);
f2(8, 508, 507);
f2(508, 331, 507);
f2(330, 331, 508);
f2(8, 11, 508);
f2(11, 502, 508);
f2(504, 330, 502);
f2(502, 330, 508);
f2(11, 41, 502);
f2(41, 503, 502);
f2(503, 385, 502);
f2(385, 504, 502);
f2(505, 503, 501);
f2(328, 505, 501);
f2(503, 9, 501);
f2(9, 146, 501);
f2(146, 328, 501);
f2(146, 329, 328);
f2(327, 329, 146);
f2(146, 500, 327);
f2(391, 327, 500);
f2(500, 146, 118);
f2(118, 150, 500);
f2(150, 506, 500);
f2(332, 506, 150);
f2(323, 332, 150);
f2(499, 323, 150);
f2(497, 321, 322);
f2(326, 321, 497);
f2(497, 322, 498);
f2(498, 499, 152);
f2(498, 322, 499);
f2(152, 151, 498);
f2(151, 497, 498);
f2(151, 496, 497);
f2(496, 326, 497);
f2(495, 496, 149);
f2(495, 318, 496);
f2(149, 42, 495);
f2(319, 318, 495);
f2(494, 319, 495);
f2(42, 494, 495);
f2(494, 320, 319);
f2(315, 320, 494);
f2(42, 19, 494);
f2(19, 316, 494);
f2(316, 315, 494);
f2(19, 317, 316);
f2(19, 312, 317);
f2(18, 313, 19);
f2(19, 313, 312);
f2(18, 314, 313);
f2(18, 309, 314);
f2(18, 493, 309);
f2(493, 310, 309);
f2(493, 311, 310);
f2(493, 307, 311);
f2(493, 16, 307);
f2(18, 17, 493);
f2(17, 52, 493);
f2(52, 16, 493);
f2(307, 16, 492);
f2(492, 16, 308);
f2(16, 15, 308);
f2(308, 15, 388);
f2(388, 15, 354);
f2(354, 15, 389);
f2(15, 23, 389);
f2(389, 23, 491);
f2(491, 23, 306);
f2(23, 305, 306);
f2(23, 490, 305);
f2(23, 24, 490);
f2(24, 21, 490);
f2(490, 21, 489);
f2(304, 490, 489);
f2(304, 305, 490);
f2(336, 488, 487);
f2(302, 488, 336);
f2(335, 486, 301);
f2(336, 486, 335);
f2(336, 487, 486);
f2(655, 449, 341);
f2(449, 429, 341);
f2(655, 341, 654);
f2(485, 470, 655);
f2(470, 449, 655);
f2(657, 485, 656);
f2(485, 655, 656);
f2(658, 485, 657);
f2(484, 470, 485);
f2(638, 485, 658);
f2(484, 485, 638);
f2(467, 470, 484);
f2(639, 484, 638);
f2(483, 642, 643);
f2(342, 642, 483);
f2(483, 643, 482);
f2(482, 643, 644);
f2(463, 342, 483);
f2(482, 644, 345);
f2(345, 644, 645);
f2(462, 482, 345);
f2(369, 481, 368);
f2(481, 333, 368);
f2(346, 480, 369);
f2(369, 480, 481);
f2(346, 647, 480);
f2(480, 647, 648);
f2(649, 650, 479);
f2(649, 479, 478);
f2(368, 333, 478);
f2(479, 390, 478);
f2(478, 390, 392);
f2(334, 478, 392);
f2(368, 478, 334);
f2(477, 339, 460);
f2(459, 339, 477);
f2(477, 460, 476);
f2(476, 460, 441);
f2(476, 441, 473);
f2(473, 441, 438);
f2(459, 477, 475);
f2(475, 477, 476);
f2(474, 475, 476);
f2(454, 475, 474);
f2(474, 476, 473);
f2(472, 473, 457);
f2(473, 438, 457);
f2(468, 472, 451);
f2(472, 457, 451);
f2(454, 474, 471);
f2(471, 474, 472);
f2(474, 473, 472);
f2(452, 454, 471);
f2(452, 471, 469);
f2(469, 471, 468);
f2(471, 472, 468);
f2(468, 451, 467);
f2(467, 451, 470);
f2(451, 450, 470);
f2(447, 469, 468);
f2(447, 468, 467);
f2(466, 447, 467);
f2(466, 467, 343);
f2(465, 466, 343);
f2(465, 343, 463);
f2(465, 463, 464);
f2(464, 463, 483);
f2(464, 483, 462);
f2(462, 483, 482);
f2(461, 462, 345);
f2(344, 461, 345);
f2(460, 339, 365);
f2(460, 365, 364);
f2(459, 366, 339);
f2(458, 366, 459);
f2(460, 364, 441);
f2(441, 437, 438);
f2(458, 459, 475);
f2(439, 458, 475);
f2(439, 475, 455);
f2(455, 475, 454);
f2(457, 438, 456);
f2(456, 438, 436);
f2(457, 456, 451);
f2(451, 456, 433);
f2(456, 436, 433);
f2(453, 455, 452);
f2(455, 454, 452);
f2(451, 433, 450);
f2(450, 433, 432);
f2(470, 450, 449);
f2(450, 432, 449);
f2(449, 432, 429);
f2(453, 452, 448);
f2(448, 452, 447);
f2(452, 469, 447);
f2(448, 447, 446);
f2(446, 447, 466);
f2(423, 446, 445);
f2(426, 446, 423);
f2(445, 466, 465);
f2(446, 466, 445);
f2(421, 445, 444);
f2(423, 445, 421);
f2(444, 465, 464);
f2(445, 465, 444);
f2(421, 444, 443);
f2(443, 444, 462);
f2(444, 464, 462);
f2(419, 443, 461);
f2(420, 443, 419);
f2(443, 462, 461);
f2(442, 461, 344);
f2(419, 461, 442);
f2(441, 364, 350);
f2(441, 350, 437);
f2(437, 350, 349);
f2(437, 349, 348);
f2(440, 367, 458);
f2(352, 440, 439);
f2(440, 458, 439);
f2(438, 437, 436);
f2(437, 348, 436);
f2(436, 348, 417);
f2(433, 436, 413);
f2(436, 417, 413);
f2(413, 417, 384);
f2(352, 439, 435);
f2(435, 439, 455);
f2(414, 435, 434);
f2(435, 455, 453);
f2(434, 435, 453);
f2(432, 433, 431);
f2(433, 413, 431);
f2(431, 413, 411);
f2(432, 431, 429);
f2(429, 431, 411);
f2(409, 434, 430);
f2(434, 453, 430);
f2(430, 453, 448);
f2(409, 430, 427);
f2(427, 430, 426);
f2(430, 448, 426);
f2(426, 448, 446);
f2(429, 411, 428);
f2(411, 383, 408);
f2(428, 411, 408);
f2(424, 428, 405);
f2(428, 408, 405);
f2(425, 426, 423);
f2(427, 426, 425);
f2(424, 405, 404);
f2(479, 404, 390);
f2(422, 423, 421);
f2(425, 423, 422);
f2(401, 422, 420);
f2(422, 421, 420);
f2(420, 421, 443);
f2(401, 420, 400);
f2(400, 420, 419);
f2(418, 419, 442);
f2(400, 419, 418);
f2(417, 348, 386);
f2(417, 386, 384);
f2(358, 352, 416);
f2(416, 352, 435);
f2(358, 416, 415);
f2(415, 416, 414);
f2(416, 435, 414);
f2(355, 415, 414);
f2(413, 384, 412);
f2(412, 384, 504);
f2(413, 412, 411);
f2(412, 504, 385);
f2(411, 412, 383);
f2(412, 385, 383);
f2(355, 414, 410);
f2(410, 414, 409);
f2(414, 434, 409);
f2(410, 409, 407);
f2(407, 409, 427);
f2(408, 383, 382);
f2(405, 408, 379);
f2(408, 382, 379);
f2(397, 407, 406);
f2(407, 427, 406);
f2(397, 406, 395);
f2(406, 427, 425);
f2(395, 406, 403);
f2(406, 425, 403);
f2(405, 379, 380);
f2(404, 405, 380);
f2(404, 380, 390);
f2(390, 380, 378);
f2(395, 403, 393);
f2(403, 425, 422);
f2(393, 403, 401);
f2(403, 422, 401);
f2(393, 401, 402);
f2(361, 402, 400);
f2(402, 401, 400);
f2(360, 400, 418);
f2(361, 400, 360);
f2(356, 355, 410);
f2(376, 356, 374);
f2(374, 356, 399);
f2(399, 356, 410);
f2(399, 410, 407);
f2(374, 399, 398);
f2(398, 399, 397);
f2(399, 407, 397);
f2(398, 397, 395);
f2(398, 395, 396);
f2(396, 395, 393);
f2(396, 393, 394);
f2(394, 393, 402);
f2(334, 392, 506);
f2(390, 378, 391);
f2(370, 334, 323);
f2(332, 334, 506);
f2(351, 337, 336);
f2(365, 337, 351);
f2(367, 389, 491);
f2(367, 354, 389);
f2(360, 418, 377);
f2(348, 335, 387);
f2(335, 507, 387);
f2(335, 301, 507);
f2(388, 354, 353);
f2(308, 388, 359);
f2(359, 388, 353);
f2(359, 353, 358);
f2(348, 387, 386);
f2(387, 507, 331);
f2(386, 387, 330);
f2(387, 331, 330);
f2(386, 330, 384);
f2(384, 330, 504);
f2(383, 385, 503);
f2(382, 383, 503);
f2(382, 503, 505);
f2(382, 505, 381);
f2(379, 382, 381);
f2(378, 329, 327);
f2(378, 381, 329);
f2(381, 328, 329);
f2(380, 381, 378);
f2(381, 505, 328);
f2(380, 379, 381);
f2(391, 378, 327);
f2(318, 362, 496);
f2(496, 377, 326);
f2(362, 377, 496);
f2(362, 360, 377);
f2(492, 308, 359);
f2(492, 359, 357);
f2(307, 492, 357);
f2(307, 357, 376);
f2(311, 307, 376);
f2(357, 356, 376);
f2(311, 376, 375);
f2(310, 311, 375);
f2(375, 376, 374);
f2(310, 375, 309);
f2(309, 375, 314);
f2(314, 375, 325);
f2(325, 374, 398);
f2(314, 325, 313);
f2(313, 325, 373);
f2(325, 398, 373);
f2(313, 373, 312);
f2(312, 373, 371);
f2(371, 373, 372);
f2(373, 398, 372);
f2(372, 398, 396);
f2(316, 324, 315);
f2(324, 396, 394);
f2(372, 396, 324);
f2(371, 372, 324);
f2(317, 371, 316);
f2(316, 371, 324);
f2(312, 371, 317);
f2(315, 324, 320);
f2(320, 363, 319);
f2(320, 324, 363);
f2(319, 363, 318);
f2(324, 394, 363);
f2(499, 370, 323);
f2(322, 370, 499);
f2(370, 368, 334);
f2(322, 368, 370);
f2(369, 368, 322);
f2(366, 491, 306);
f2(366, 306, 339);
f2(367, 491, 366);
f2(458, 367, 366);
f2(365, 338, 337);
f2(365, 351, 364);
f2(339, 338, 365);
f2(363, 402, 361);
f2(394, 402, 363);
f2(363, 361, 362);
f2(363, 362, 318);
f2(362, 361, 360);
f2(357, 359, 415);
f2(359, 358, 415);
f2(357, 415, 356);
f2(356, 415, 355);
f2(440, 354, 367);
f2(354, 440, 353);
f2(353, 440, 352);
f2(358, 353, 352);
f2(364, 351, 350);
f2(350, 351, 335);
f2(351, 336, 335);
f2(350, 335, 349);
f2(349, 335, 348);
f2(651, 340, 347);
f2(347, 340, 424);
f2(651, 347, 650);
f2(347, 424, 404);
f2(650, 347, 479);
f2(347, 404, 479);
f2(346, 646, 647);
f2(345, 646, 346);
f2(344, 345, 346);
f2(345, 645, 646);
f2(343, 467, 484);
f2(484, 639, 640);
f2(343, 484, 342);
f2(342, 640, 641);
f2(342, 484, 640);
f2(463, 343, 342);
f2(342, 641, 642);
f2(341, 429, 428);
f2(340, 341, 428);
f2(340, 428, 424);
f2(654, 341, 653);
f2(653, 340, 652);
f2(653, 341, 340);
f2(652, 340, 651);
f2(306, 305, 339);
f2(305, 304, 339);
f2(304, 489, 338);
f2(339, 304, 338);
f2(489, 303, 338);
f2(337, 303, 302);
f2(338, 303, 337);
f2(337, 302, 336);
f2(323, 334, 332);
f2(375, 374, 325);
f2(174, 177, 79);
f2(79, 177, 77);
f2(177, 232, 77);
f2(170, 79, 84);
f2(170, 173, 79);
f2(173, 174, 79);
f2(190, 170, 84);
f2(84, 187, 190);
f2(82, 187, 84);
f2(186, 187, 82);
f2(185, 82, 80);
f2(82, 185, 186);
f2(184, 185, 80);
f2(80, 81, 184);
f2(184, 81, 197);
f2(81, 300, 197);
f2(300, 148, 201);
f2(148, 299, 201);
f2(242, 201, 299);
f2(147, 299, 148);
f2(147, 76, 299);
f2(243, 242, 299);
f2(76, 243, 299);
f2(191, 243, 76);
f2(193, 191, 76);
f2(194, 193, 3);
f2(3, 193, 76);
f2(169, 194, 3);
f2(168, 169, 3);
f2(298, 168, 3);
f2(85, 298, 3);
f2(167, 168, 298);
f2(166, 167, 298);
f2(4, 166, 298);
f2(5, 298, 85);
f2(5, 4, 298);
f2(234, 4, 102);
f2(234, 166, 4);
f2(102, 232, 234);
f2(102, 77, 232);
f2(245, 220, 223);
f2(244, 245, 223);
f2(292, 244, 209);
f2(222, 292, 209);
f2(282, 292, 222);
f2(282, 222, 224);
f2(246, 282, 224);
f2(247, 246, 224);
f2(225, 247, 224);
f2(285, 247, 225);
f2(248, 285, 225);
f2(227, 248, 225);
f2(249, 248, 227);
f2(249, 227, 228);
f2(250, 249, 228);
f2(250, 228, 226);
f2(251, 250, 226);
f2(229, 251, 226);
f2(276, 251, 229);
f2(289, 276, 229);
f2(289, 229, 214);
f2(214, 229, 213);
f2(0xFF, 289, 214);
f2(237, 0xFF, 214);
f2(237, 214, 215);
f2(231, 252, 237);
f2(252, 0xFF, 237);
f2(283, 252, 231);
f2(283, 231, 230);
f2(253, 283, 230);
f2(254, 253, 230);
f2(219, 254, 230);
f2(220, 254, 219);
f2(245, 254, 220);
f2(211, 203, 200);
f2(191, 192, 243);
f2(192, 212, 243);
f2(212, 211, 243);
f2(243, 211, 242);
f2(211, 200, 242);
f2(242, 200, 201);
f2(236, 238, 241);
f2(241, 238, 195);
f2(238, 210, 195);
f2(241, 167, 166);
f2(241, 195, 168);
f2(167, 241, 168);
f2(168, 195, 169);
f2(221, 239, 176);
f2(176, 239, 178);
f2(172, 209, 176);
f2(218, 236, 235);
f2(233, 218, 235);
f2(239, 233, 178);
f2(240, 218, 233);
f2(239, 240, 233);
f2(221, 240, 239);
f2(217, 216, 210);
f2(238, 217, 210);
f2(236, 218, 238);
f2(218, 217, 238);
f2(231, 237, 216);
f2(216, 237, 215);
f2(209, 221, 176);
f2(209, 244, 221);
f2(235, 236, 241);
f2(235, 241, 234);
f2(234, 241, 166);
f2(233, 235, 232);
f2(232, 235, 234);
f2(178, 233, 232);
f2(177, 178, 232);
f2(223, 220, 221);
f2(244, 223, 221);
f2(227, 225, 204);
f2(204, 225, 179);
f2(228, 227, 204);
f2(226, 228, 205);
f2(225, 206, 179);
f2(225, 224, 206);
f2(224, 207, 206);
f2(224, 222, 207);
f2(222, 208, 207);
f2(222, 209, 208);
f2(221, 220, 240);
f2(220, 219, 240);
f2(240, 219, 218);
f2(219, 230, 218);
f2(218, 230, 217);
f2(230, 231, 217);
f2(231, 216, 217);
f2(229, 226, 205);
f2(229, 205, 213);
f2(215, 214, 212);
f2(214, 213, 212);
f2(212, 213, 211);
f2(213, 205, 203);
f2(213, 203, 211);
f2(215, 212, 192);
f2(208, 209, 172);
f2(208, 172, 189);
f2(207, 208, 189);
f2(207, 189, 181);
f2(206, 207, 181);
f2(179, 206, 181);
f2(204, 179, 202);
f2(200, 199, 300);
f2(200, 300, 201);
f2(203, 198, 199);
f2(203, 199, 200);
f2(199, 197, 300);
f2(199, 196, 197);
f2(198, 202, 196);
f2(198, 196, 199);
f2(196, 184, 197);
f2(196, 182, 184);
f2(202, 180, 182);
f2(202, 182, 196);
f2(179, 180, 202);
f2(195, 210, 194);
f2(169, 195, 194);
f2(210, 192, 193);
f2(194, 210, 193);
f2(210, 216, 192);
f2(216, 215, 192);
f2(193, 192, 191);
f2(171, 170, 190);
f2(189, 172, 188);
f2(172, 171, 188);
f2(188, 171, 187);
f2(171, 190, 187);
f2(183, 188, 186);
f2(188, 187, 186);
f2(183, 186, 185);
f2(182, 183, 185);
f2(182, 185, 184);
f2(181, 189, 188);
f2(181, 188, 183);
f2(180, 181, 183);
f2(180, 183, 182);
f2(179, 181, 180);
f2(175, 176, 178);
f2(175, 178, 174);
f2(174, 178, 177);
f2(173, 175, 174);
f2(172, 176, 171);
f2(171, 176, 175);
f2(170, 175, 173);
f2(171, 175, 170);
f2(0x0100, 228, 204);
f2(228, 0x0100, 205);
f2(265, 262, 269);
f2(262, 280, 287);
f2(287, 280, 294);
f2(287, 294, 286);
f2(286, 294, 247);
f2(285, 286, 247);
f2(293, 289, 0xFF);
f2(265, 269, 293);
f2(265, 293, 0xFF);
f2(252, 265, 0xFF);
f2(295, 274, 275);
f2(295, 273, 274);
f2(295, 0x0101, 273);
f2(278, 295, 275);
f2(272, 295, 278);
f2(271, 295, 272);
f2(0x0101, 295, 271);
f2(276, 290, 277);
f2(277, 290, 259);
f2(290, 258, 259);
f2(290, 260, 258);
f2(260, 290, 291);
f2(258, 268, 259);
f2(268, 249, 250);
f2(259, 268, 250);
f2(273, 0x0101, 267);
f2(267, 264, 266);
f2(267, 0x0101, 270);
f2(264, 270, 263);
f2(267, 270, 264);
f2(261, 279, 254);
f2(245, 261, 254);
f2(292, 275, 261);
f2(278, 275, 292);
f2(282, 278, 292);
f2(244, 261, 245);
f2(292, 261, 244);
f2(277, 250, 251);
f2(277, 259, 250);
f2(276, 277, 251);
f2(289, 290, 276);
f2(288, 291, 269);
f2(288, 260, 291);
f2(269, 291, 290);
f2(262, 288, 269);
f2(269, 290, 293);
f2(290, 289, 293);
f2(260, 288, 287);
f2(288, 262, 287);
f2(258, 287, 286);
f2(260, 287, 258);
f2(258, 286, 285);
f2(258, 248, 268);
f2(258, 285, 248);
f2(268, 248, 249);
f2(275, 274, 284);
f2(275, 284, 279);
f2(279, 284, 253);
f2(279, 253, 254);
f2(261, 275, 279);
f2(274, 252, 283);
f2(274, 283, 284);
f2(284, 283, 253);
f2(266, 264, 262);
f2(266, 262, 265);
f2(273, 267, 266);
f2(274, 266, 252);
f2(274, 273, 266);
f2(252, 266, 265);
f2(281, 271, 246);
f2(271, 272, 246);
f2(246, 272, 282);
f2(272, 278, 282);
f2(281, 246, 247);
f2(270, 271, 281);
f2(263, 270, 281);
f2(262, 263, 280);
f2(264, 263, 262);
f2(280, 281, 294);
f2(263, 281, 280);
f2(294, 281, 247);
f2(0x0101, 271, 270);
f2(0x0100, 204, 296);
f2(296, 205, 0x0100);
f2(296, 204, 297);
f2(297, 205, 296);
f2(203, 205, 297);
f2(198, 203, 297);
f2(297, 202, 198);
f2(202, 297, 204);
f2(1354, 1365, 100);
f2(164, 100, 78);
f2(164, 78, 77);
f2(78, 79, 77);
f2(164, 77, 163);
f2(163, 77, 102);
f2(162, 163, 102);
f2(162, 102, 4);
f2(5, 162, 4);
f2(5, 161, 162);
f2(161, 101, 99);
f2(158, 1355, 160);
f2(1355, 159, 160);
f2(160, 159, 165);
f2(159, 1355, 1366);
f2(158, 1417, 1355);
f2(7, 6, 156);
f2(6, 157, 156);
f2(149, 496, 151);
f2(155, 42, 153);
f2(114, 42, 155);
f2(114, 113, 42);
f2(154, 155, 153);
f2(153, 149, 2);
f2(153, 42, 149);
f2(152, 150, 666);
f2(152, 499, 150);
f2(3, 76, 85);
f2(147, 72, 94);
f2(85, 147, 94);
f2(147, 148, 72);
f2(85, 76, 147);
f2(13, 12, 21);
f2(50, 15, 52);
f2(146, 9, 10);
f2(146, 10, 118);
f2(145, 138, 144);
f2(142, 145, 144);
f2(142, 144, 143);
f2(141, 143, 144);
f2(140, 141, 144);
f2(139, 140, 144);
f2(138, 139, 144);
f2(136, 130, 133);
f2(137, 136, 133);
f2(135, 137, 133);
f2(134, 135, 133);
f2(131, 134, 133);
f2(133, 132, 131);
f2(130, 132, 133);
f2(128, 122, 129);
f2(129, 127, 128);
f2(126, 127, 129);
f2(126, 129, 125);
f2(125, 129, 124);
f2(129, 123, 124);
f2(129, 122, 123);
f2(120, 29, 121);
f2(27, 121, 29);
f2(27, 35, 121);
f2(29, 120, 31);
f2(28, 31, 30);
f2(119, 32, 1367);
f2(119, 28, 30);
f2(119, 30, 32);
f2(1367, 32, 1368);
f2(120, 1370, 1369);
f2(120, 89, 1370);
f2(38, 36, 14);
f2(44, 14, 13);
f2(150, 118, 666);
f2(503, 41, 117);
f2(45, 115, 37);
f2(45, 116, 115);
f2(45, 1361, 1360);
f2(45, 1360, 116);
f2(37, 115, 36);
f2(66, 114, 155);
f2(112, 111, 113);
f2(112, 113, 114);
f2(112, 58, 111);
f2(111, 108, 110);
f2(59, 111, 58);
f2(59, 108, 111);
f2(104, 109, 60);
f2(60, 109, 53);
f2(60, 53, 108);
f2(107, 51, 109);
f2(107, 57, 51);
f2(107, 109, 104);
f2(55, 105, 49);
f2(55, 49, 57);
f2(54, 0, 106);
f2(105, 106, 49);
f2(105, 54, 106);
f2(0, 1364, 106);
f2(103, 104, 67);
f2(67, 104, 60);
f2(103, 107, 104);
f2(70, 107, 103);
f2(78, 84, 79);
f2(5, 85, 161);
f2(1365, 83, 100);
f2(78, 100, 84);
f2(91, 96, 90);
f2(89, 91, 90);
f2(90, 96, 98);
f2(90, 98, 97);
f2(99, 101, 34);
f2(97, 75, 1371);
f2(1375, 97, 1371);
f2(96, 74, 98);
f2(98, 74, 75);
f2(97, 98, 75);
f2(95, 68, 73);
f2(96, 73, 74);
f2(91, 73, 96);
f2(94, 67, 95);
f2(94, 72, 67);
f2(93, 0, 92);
f2(92, 0, 54);
f2(80, 92, 54);
f2(1, 93, 92);
f2(86, 94, 95);
f2(34, 86, 95);
f2(95, 91, 87);
f2(95, 73, 91);
f2(88, 90, 97);
f2(1375, 88, 97);
f2(33, 91, 89);
f2(89, 90, 88);
f2(34, 95, 87);
f2(33, 87, 91);
f2(161, 86, 101);
f2(86, 85, 94);
f2(101, 86, 34);
f2(161, 85, 86);
f2(83, 82, 84);
f2(100, 83, 84);
f2(82, 83, 1);
f2(1, 92, 82);
f2(82, 92, 80);
f2(80, 54, 81);
f2(300, 71, 148);
f2(300, 81, 71);
f2(1371, 75, 1372);
f2(74, 63, 65);
f2(75, 74, 65);
f2(68, 61, 73);
f2(73, 61, 74);
f2(74, 61, 63);
f2(95, 67, 68);
f2(148, 70, 72);
f2(72, 70, 103);
f2(72, 103, 67);
f2(71, 56, 69);
f2(148, 71, 69);
f2(148, 69, 70);
f2(71, 81, 56);
f2(81, 54, 56);
f2(56, 55, 69);
f2(68, 59, 61);
f2(61, 58, 63);
f2(65, 63, 62);
f2(75, 65, 64);
f2(1372, 75, 64);
f2(1372, 64, 1373);
f2(65, 62, 66);
f2(62, 114, 66);
f2(65, 66, 64);
f2(58, 112, 63);
f2(62, 63, 112);
f2(62, 112, 114);
f2(61, 59, 58);
f2(67, 60, 59);
f2(68, 67, 59);
f2(60, 108, 59);
f2(70, 55, 57);
f2(70, 57, 107);
f2(69, 55, 70);
f2(56, 105, 55);
f2(56, 54, 105);
f2(108, 53, 110);
f2(110, 53, 18);
f2(53, 17, 18);
f2(109, 52, 53);
f2(53, 52, 17);
f2(109, 50, 52);
f2(51, 26, 109);
f2(57, 48, 51);
f2(26, 50, 109);
f2(57, 49, 48);
f2(106, 1364, 1363);
f2(106, 1363, 47);
f2(49, 106, 47);
f2(49, 47, 46);
f2(49, 46, 48);
f2(48, 46, 38);
f2(48, 38, 25);
f2(38, 44, 25);
f2(47, 1363, 1362);
f2(1362, 1361, 45);
f2(46, 45, 37);
f2(47, 45, 46);
f2(47, 1362, 45);
f2(46, 37, 38);
f2(25, 44, 22);
f2(113, 111, 43);
f2(113, 43, 42);
f2(111, 110, 43);
f2(110, 18, 43);
f2(9, 39, 40);
f2(117, 39, 9);
f2(38, 14, 44);
f2(22, 44, 13);
f2(38, 37, 36);
f2(99, 35, 27);
f2(99, 34, 35);
f2(34, 87, 35);
f2(35, 87, 33);
f2(121, 33, 89);
f2(121, 89, 120);
f2(35, 33, 121);
f2(7, 27, 29);
f2(28, 29, 31);
f2(7, 29, 28);
f2(26, 22, 50);
f2(26, 25, 22);
f2(51, 25, 26);
f2(51, 48, 25);
f2(50, 22, 15);
f2(22, 24, 15);
f2(15, 24, 23);
f2(22, 13, 24);
f2(24, 13, 21);
f2(43, 18, 19);
f2(43, 19, 42);
f2(52, 15, 16);
f2(36, 115, 14);
f2(14, 12, 13);
f2(9, 503, 117);
f2(1378, 119, 1367);
f2(119, 6, 28);
f2(6, 7, 28);
f2(1373, 155, 1374);
f2(1373, 66, 155);
f2(64, 66, 1373);
f2(1374, 155, 154);
f2(665, 153, 2);
f2(154, 153, 665);
f2(116, 1360, 1359);
f2(164, 1354, 100);
f2(1374, 665, 1356);
f2(1374, 154, 665);
f2(1357, 1345, 1348);
f2(1357, 1358, 1345);
f2(1358, 1344, 1345);
f2(1358, 1359, 1344);
f2(1344, 1359, 1350);
f2(1359, 795, 1349);
f2(1350, 1359, 1349);
f2(1349, 795, 1343);
f2(795, 794, 1343);
f2(1343, 794, 1342);
f2(794, 696, 1342);
f2(1342, 696, 1341);
f2(696, 694, 1341);
f2(1341, 694, 1351);
f2(694, 703, 1351);
f2(1351, 703, 1337);
f2(703, 702, 1337);
f2(702, 690, 1337);
f2(1337, 690, 1338);
f2(690, 693, 1338);
f2(1338, 693, 1339);
f2(693, 721, 1339);
f2(1339, 721, 1340);
f2(1346, 721, 1352);
f2(721, 1346, 1340);
f2(1347, 1340, 1346);
f2(721, 796, 1352);
f2(1346, 1352, 1353);
f2(796, 1434, 1352);
f2(1352, 1434, 1432);
f2(720, 1433, 1434);
f2(691, 692, 720);
f2(1330, 1433, 720);
f2(1330, 720, 692);
f2(1330, 692, 1331);
f2(797, 1331, 692);
f2(1336, 1331, 797);
f2(830, 1334, 1336);
f2(829, 1334, 830);
f2(1333, 1334, 829);
f2(827, 1333, 829);
f2(686, 1333, 827);
f2(1332, 1333, 686);
f2(1335, 1332, 686);
f2(1258, 1149, 1320);
f2(1004, 1149, 1258);
f2(1319, 1004, 1258);
f2(1152, 1004, 1319);
f2(1151, 1152, 1319);
f2(1289, 1268, 1244);
f2(1272, 1289, 1249);
f2(1289, 1244, 1249);
f2(1272, 1249, 1308);
f2(1272, 1308, 1264);
f2(1264, 1308, 1248);
f2(1249, 1251, 1308);
f2(1251, 1188, 1308);
f2(1248, 1308, 1187);
f2(1188, 1187, 1308);
f2(1306, 1307, 1186);
f2(1263, 1307, 1306);
f2(1248, 1186, 1307);
f2(1263, 1248, 1307);
f2(1264, 1248, 1271);
f2(1271, 1248, 1263);
f2(1270, 1263, 1306);
f2(1270, 1306, 1247);
f2(1305, 1270, 1247);
f2(1305, 1247, 1262);
f2(1247, 1246, 1262);
f2(1262, 1246, 1261);
f2(1261, 1246, 1304);
f2(1246, 1245, 1304);
f2(1303, 1304, 1245);
f2(1269, 1303, 1245);
f2(1269, 1245, 1243);
f2(1260, 1269, 1243);
f2(1259, 1260, 1243);
f2(1259, 1243, 1244);
f2(1268, 1259, 1244);
f2(1300, 1305, 1301);
f2(1321, 1302, 1297);
f2(1322, 1302, 1321);
f2(1297, 1302, 1296);
f2(1296, 1302, 1301);
f2(1302, 1300, 1301);
f2(1322, 1298, 1302);
f2(1323, 1298, 1322);
f2(1324, 1298, 1323);
f2(1324, 1325, 1298);
f2(1325, 1277, 1298);
f2(1277, 1273, 1298);
f2(1300, 1270, 1305);
f2(1299, 1270, 1300);
f2(1298, 1299, 1300);
f2(1273, 1299, 1298);
f2(1298, 1300, 1302);
f2(1321, 1297, 1320);
f2(1295, 1296, 1261);
f2(1295, 1261, 1304);
f2(1320, 1296, 1295);
f2(1297, 1296, 1320);
f2(1269, 1293, 1267);
f2(1291, 1316, 1294);
f2(1316, 1317, 1294);
f2(1294, 1317, 1318);
f2(1294, 1318, 1266);
f2(1291, 1294, 1290);
f2(1290, 1294, 1293);
f2(1294, 1266, 1267);
f2(1293, 1294, 1267);
f2(1268, 1292, 1290);
f2(1287, 1314, 1315);
f2(1287, 1315, 1288);
f2(1288, 1315, 1316);
f2(1291, 1288, 1316);
f2(0x0505, 1288, 1292);
f2(1288, 1291, 1290);
f2(1292, 1288, 1290);
f2(1268, 0x0505, 1292);
f2(1289, 0x0505, 1268);
f2(1289, 1286, 0x0505);
f2(1284, 1314, 1287);
f2(1284, 1313, 1314);
f2(1284, 1287, 1286);
f2(1286, 1287, 0x0505);
f2(0x0505, 1287, 1288);
f2(1272, 1282, 1286);
f2(1272, 1286, 1289);
f2(1278, 1282, 1272);
f2(1281, 1311, 1283);
f2(1310, 1311, 1281);
f2(1281, 1283, 1279);
f2(1311, 1312, 1283);
f2(1283, 1313, 1284);
f2(1312, 1313, 1283);
f2(1279, 1283, 1278);
f2(1278, 1283, 1282);
f2(1283, 1284, 1282);
f2(1282, 1284, 1286);
f2(1275, 0x0500, 1271);
f2(1329, 1281, 1328);
f2(1328, 1281, 1276);
f2(1329, 1309, 1281);
f2(1281, 1279, 1276);
f2(1309, 1310, 1281);
f2(1276, 0x0500, 1275);
f2(1279, 1278, 1276);
f2(1276, 1278, 0x0500);
f2(1325, 1326, 1277);
f2(1327, 1328, 1277);
f2(1326, 1327, 1277);
f2(1328, 1276, 1277);
f2(1275, 1271, 1274);
f2(1299, 1274, 1270);
f2(1277, 1276, 1275);
f2(1277, 1275, 1274);
f2(1273, 1274, 1299);
f2(1277, 1274, 1273);
f2(1264, 1278, 1272);
f2(1278, 1264, 0x0500);
f2(0x0500, 1264, 1271);
f2(1271, 1263, 1274);
f2(1274, 1263, 1270);
f2(1301, 1262, 1296);
f2(1301, 1305, 1262);
f2(1296, 1262, 1261);
f2(1269, 1267, 1303);
f2(1260, 1293, 1269);
f2(1260, 1290, 1293);
f2(1259, 1268, 1290);
f2(1259, 1290, 1260);
f2(1267, 1265, 1303);
f2(1303, 1265, 1304);
f2(1265, 1295, 1304);
f2(1258, 1320, 1295);
f2(1258, 1295, 1265);
f2(1266, 1318, 1319);
f2(1267, 1266, 1265);
f2(1266, 1319, 1265);
f2(1319, 1258, 1265);
f2(1201, 1252, 1204);
f2(1252, 1201, 1207);
f2(1255, 1256, 1206);
f2(1254, 1256, 1255);
f2(1224, 1252, 1207);
f2(1224, 1207, 1194);
f2(1257, 1197, 1206);
f2(1206, 1256, 1257);
f2(1223, 1197, 1257);
f2(1228, 1223, 1257);
f2(1256, 1228, 1257);
f2(1227, 1228, 1256);
f2(1254, 1227, 1256);
f2(1206, 1202, 1255);
f2(1202, 1204, 1255);
f2(1204, 1254, 1255);
f2(1204, 1253, 1254);
f2(1227, 1254, 1225);
f2(1253, 1225, 1254);
f2(1204, 1252, 1253);
f2(1252, 1226, 1253);
f2(1226, 1225, 1253);
f2(1226, 1252, 1224);
f2(1222, 1224, 1194);
f2(1192, 1189, 1191);
f2(1200, 1203, 1202);
f2(1201, 1202, 1203);
f2(1199, 1201, 1203);
f2(1198, 1201, 1199);
f2(1195, 1201, 1198);
f2(1201, 1204, 1202);
f2(1205, 1206, 1196);
f2(1200, 1202, 1205);
f2(1202, 1206, 1205);
f2(1195, 1207, 1201);
f2(1195, 1193, 1207);
f2(1206, 1197, 1196);
f2(1193, 1194, 1207);
f2(1212, 1213, 1210);
f2(1209, 1211, 1208);
f2(1213, 1242, 1210);
f2(1242, 1229, 1210);
f2(1234, 1239, 1210);
f2(1210, 1239, 1212);
f2(1210, 1229, 1234);
f2(1230, 1234, 1229);
f2(1234, 1230, 1235);
f2(1231, 1235, 1230);
f2(1235, 1231, 1236);
f2(1232, 1236, 1231);
f2(1236, 1232, 1237);
f2(1233, 1237, 1232);
f2(1237, 1233, 1238);
f2(1241, 1209, 1233);
f2(1209, 1241, 1211);
f2(1238, 1233, 1209);
f2(1209, 1208, 1238);
f2(1240, 1238, 1208);
f2(1216, 1217, 1191);
f2(1217, 1192, 1191);
f2(1184, 1185, 1306);
f2(1306, 1185, 1247);
f2(1185, 1214, 1247);
f2(1214, 1246, 1247);
f2(1246, 1214, 1192);
f2(1189, 1192, 1214);
f2(1246, 1192, 1245);
f2(1192, 1217, 1245);
f2(1219, 1245, 1217);
f2(1243, 1245, 1219);
f2(1218, 1243, 1219);
f2(1244, 1243, 1218);
f2(1220, 1244, 1218);
f2(1221, 1244, 1220);
f2(1244, 1221, 1250);
f2(1221, 1215, 1250);
f2(1250, 1215, 1190);
f2(1250, 1190, 1188);
f2(1188, 1251, 1250);
f2(1249, 1244, 1251);
f2(1251, 1244, 1250);
f2(1306, 1186, 1184);
f2(1248, 1187, 1186);
f2(1062, 1177, 1171);
f2(1062, 1063, 1177);
f2(1061, 1063, 1062);
f2(1181, 997, 992);
f2(1048, 997, 1181);
f2(1089, 1048, 1181);
f2(1113, 1089, 1181);
f2(1113, 1181, 1183);
f2(1015, 1113, 1183);
f2(1015, 1183, 1182);
f2(1017, 1015, 1182);
f2(1017, 1182, 1040);
f2(993, 1040, 1182);
f2(992, 993, 1182);
f2(1182, 1183, 992);
f2(1181, 992, 1183);
f2(1160, 974, 1180);
f2(1180, 703, 1160);
f2(1180, 702, 703);
f2(973, 1180, 974);
f2(973, 1159, 1180);
f2(1159, 702, 1180);
f2(1158, 702, 1159);
f2(702, 1157, 690);
f2(1157, 702, 1158);
f2(690, 1157, 972);
f2(1178, 690, 972);
f2(1179, 690, 1178);
f2(1002, 1179, 1178);
f2(1002, 1001, 1179);
f2(693, 690, 1179);
f2(1173, 693, 1179);
f2(1001, 1175, 1173);
f2(1001, 1173, 1179);
f2(721, 693, 1173);
f2(1174, 721, 1173);
f2(1056, 1174, 1173);
f2(1175, 1056, 1173);
f2(1174, 1176, 1172);
f2(1176, 999, 1172);
f2(691, 1174, 1172);
f2(824, 691, 1172);
f2(999, 824, 1172);
f2(1000, 824, 999);
f2(1000, 998, 824);
f2(1171, 824, 998);
f2(998, 1062, 1171);
f2(824, 1171, 797);
f2(828, 797, 1171);
f2(1177, 828, 1171);
f2(1177, 1003, 828);
f2(1003, 994, 828);
f2(994, 1170, 828);
f2(992, 1168, 993);
f2(992, 997, 1168);
f2(993, 1168, 1169);
f2(1170, 1169, 830);
f2(993, 1169, 1170);
f2(829, 830, 1169);
f2(1168, 829, 1169);
f2(1167, 829, 1168);
f2(997, 1167, 1168);
f2(1167, 1166, 827);
f2(989, 1166, 1167);
f2(722, 827, 1166);
f2(989, 990, 1166);
f2(990, 1165, 1166);
f2(1165, 722, 1166);
f2(991, 1165, 990);
f2(991, 986, 1165);
f2(701, 722, 1165);
f2(987, 701, 1165);
f2(986, 987, 1165);
f2(988, 701, 987);
f2(983, 701, 988);
f2(984, 700, 701);
f2(984, 701, 983);
f2(985, 700, 984);
f2(980, 700, 985);
f2(1164, 700, 980);
f2(981, 1164, 980);
f2(982, 1164, 981);
f2(978, 1164, 982);
f2(698, 1164, 978);
f2(699, 700, 1164);
f2(732, 699, 1164);
f2(698, 732, 1164);
f2(698, 978, 1163);
f2(698, 1163, 979);
f2(697, 698, 979);
f2(697, 979, 1059);
f2(697, 1059, 1025);
f2(697, 1025, 1060);
f2(705, 697, 1060);
f2(705, 1060, 1162);
f2(705, 1162, 977);
f2(976, 705, 977);
f2(1161, 705, 976);
f2(706, 705, 1161);
f2(703, 706, 1161);
f2(703, 1161, 1160);
f2(1161, 975, 1160);
f2(976, 975, 1161);
f2(1159, 1007, 1158);
f2(1159, 973, 1007);
f2(1157, 1006, 972);
f2(1157, 1007, 1006);
f2(1158, 1007, 1157);
f2(1120, 1326, 1012);
f2(1100, 1120, 1012);
f2(1012, 1326, 1325);
f2(1141, 1156, 1326);
f2(1120, 1141, 1326);
f2(1156, 1328, 1327);
f2(1326, 1156, 1327);
f2(1156, 1329, 1328);
f2(1141, 1155, 1156);
f2(1156, 1309, 1329);
f2(1156, 1155, 1309);
f2(1141, 1138, 1155);
f2(1155, 1310, 1309);
f2(1313, 1154, 1314);
f2(1313, 1013, 1154);
f2(1314, 1154, 1153);
f2(1314, 1153, 1315);
f2(1013, 1134, 1154);
f2(1315, 1153, 1016);
f2(1315, 1016, 1316);
f2(1153, 1133, 1016);
f2(1152, 1040, 1039);
f2(1004, 1152, 1039);
f2(1151, 1017, 1040);
f2(1151, 1040, 1152);
f2(1318, 1017, 1151);
f2(1318, 1151, 1319);
f2(1321, 1320, 1150);
f2(1150, 1320, 1149);
f2(1004, 1039, 1149);
f2(1061, 1150, 1149);
f2(1061, 1149, 1063);
f2(1149, 1005, 1063);
f2(1149, 1039, 1005);
f2(1010, 1148, 1131);
f2(1010, 1130, 1148);
f2(1131, 1148, 1147);
f2(1131, 1147, 1112);
f2(1112, 1147, 1144);
f2(1112, 1144, 1109);
f2(1148, 1130, 1146);
f2(1148, 1146, 1147);
f2(1146, 1145, 1147);
f2(1146, 1125, 1145);
f2(1147, 1145, 1144);
f2(1144, 1143, 1128);
f2(1109, 1144, 1128);
f2(1143, 1139, 1122);
f2(1128, 1143, 1122);
f2(1145, 1125, 1142);
f2(1145, 1142, 1143);
f2(1144, 1145, 1143);
f2(1125, 1123, 1142);
f2(1142, 1123, 1140);
f2(1142, 1140, 1139);
f2(1143, 1142, 1139);
f2(1122, 1139, 1138);
f2(1122, 1138, 1141);
f2(1121, 1122, 1141);
f2(1140, 1118, 1139);
f2(1139, 1118, 1138);
f2(1118, 1137, 1138);
f2(1138, 1137, 1014);
f2(1137, 1136, 1014);
f2(1014, 1136, 1134);
f2(1134, 1136, 1135);
f2(1134, 1135, 1154);
f2(1154, 1135, 1133);
f2(1154, 1133, 1153);
f2(1133, 1132, 1016);
f2(1132, 1015, 1016);
f2(1010, 1131, 1036);
f2(1036, 1131, 1035);
f2(1037, 1130, 1010);
f2(1037, 1129, 1130);
f2(1035, 1131, 1112);
f2(1108, 1112, 1109);
f2(1130, 1129, 1146);
f2(1129, 1110, 1146);
f2(1146, 1110, 1126);
f2(1146, 1126, 1125);
f2(1109, 1128, 1127);
f2(1109, 1127, 1107);
f2(1127, 1128, 1122);
f2(1127, 1122, 1104);
f2(1107, 1127, 1104);
f2(1126, 1124, 1123);
f2(1125, 1126, 1123);
f2(1104, 1122, 1121);
f2(1104, 1121, 1103);
f2(1121, 1141, 1120);
f2(1103, 1121, 1120);
f2(1103, 1120, 1100);
f2(1123, 1124, 1119);
f2(1123, 1119, 1118);
f2(1140, 1123, 1118);
f2(1118, 1119, 1117);
f2(1118, 1117, 1137);
f2(1117, 1094, 1116);
f2(1117, 1097, 1094);
f2(1137, 1116, 1136);
f2(1137, 1117, 1116);
f2(1116, 1092, 1115);
f2(1116, 1094, 1092);
f2(1136, 1115, 1135);
f2(1136, 1116, 1115);
f2(1115, 1092, 1114);
f2(1115, 1114, 1133);
f2(1135, 1115, 1133);
f2(1114, 1090, 1132);
f2(1114, 1091, 1090);
f2(1133, 1114, 1132);
f2(1132, 1113, 1015);
f2(1132, 1090, 1113);
f2(1035, 1112, 1021);
f2(1021, 1112, 1108);
f2(1021, 1108, 1020);
f2(1020, 1108, 1019);
f2(1038, 1111, 1129);
f2(1111, 1023, 1110);
f2(1129, 1111, 1110);
f2(1108, 1109, 1107);
f2(1019, 1108, 1107);
f2(1019, 1107, 1088);
f2(1107, 1104, 1084);
f2(1088, 1107, 1084);
f2(1088, 1084, 1055);
f2(1110, 1023, 1106);
f2(1110, 1106, 1126);
f2(1106, 1085, 1105);
f2(1126, 1106, 1124);
f2(1106, 1105, 1124);
f2(1104, 1103, 1102);
f2(1084, 1104, 1102);
f2(1084, 1102, 1082);
f2(1102, 1103, 1100);
f2(1102, 1100, 1082);
f2(1105, 1080, 1101);
f2(1124, 1105, 1101);
f2(1124, 1101, 1119);
f2(1101, 1080, 1098);
f2(1101, 1098, 1097);
f2(1119, 1101, 1097);
f2(1119, 1097, 1117);
f2(1082, 1100, 1099);
f2(1054, 1082, 1079);
f2(1082, 1099, 1079);
f2(1099, 1095, 1076);
f2(1079, 1099, 1076);
f2(1097, 1096, 1094);
f2(1097, 1098, 1096);
f2(1076, 1095, 1075);
f2(1075, 1150, 1061);
f2(1094, 1093, 1092);
f2(1094, 1096, 1093);
f2(1093, 1072, 1091);
f2(1092, 1093, 1091);
f2(1092, 1091, 1114);
f2(1091, 1072, 1071);
f2(1091, 1071, 1090);
f2(1090, 1089, 1113);
f2(1090, 1071, 1089);
f2(1019, 1088, 1057);
f2(1057, 1088, 1055);
f2(1023, 1029, 1087);
f2(1023, 1087, 1106);
f2(1087, 1029, 1086);
f2(1087, 1086, 1085);
f2(1106, 1087, 1085);
f2(1086, 1026, 1085);
f2(1055, 1084, 1083);
f2(1055, 1083, 1175);
f2(1083, 1084, 1082);
f2(1175, 1083, 1056);
f2(1083, 1082, 1054);
f2(1056, 1083, 1054);
f2(1085, 1026, 1081);
f2(1085, 1081, 1080);
f2(1105, 1085, 1080);
f2(1080, 1081, 1078);
f2(1080, 1078, 1098);
f2(1054, 1079, 1053);
f2(1079, 1076, 1050);
f2(1053, 1079, 1050);
f2(1078, 1068, 1077);
f2(1098, 1078, 1077);
f2(1077, 1068, 1066);
f2(1098, 1077, 1096);
f2(1077, 1066, 1074);
f2(1096, 1077, 1074);
f2(1050, 1076, 1051);
f2(1076, 1075, 1051);
f2(1051, 1075, 1061);
f2(1051, 1061, 1049);
f2(1074, 1066, 1064);
f2(1096, 1074, 1093);
f2(1074, 1064, 1072);
f2(1093, 1074, 1072);
f2(1072, 1064, 1073);
f2(1073, 1032, 1071);
f2(1072, 1073, 1071);
f2(1071, 1031, 1089);
f2(1071, 1032, 1031);
f2(1026, 1027, 1081);
f2(1027, 1047, 1045);
f2(1027, 1045, 1070);
f2(1027, 1070, 1081);
f2(1081, 1070, 1078);
f2(1070, 1045, 1069);
f2(1070, 1069, 1068);
f2(1078, 1070, 1068);
f2(1068, 1069, 1066);
f2(1066, 1069, 1067);
f2(1066, 1067, 1064);
f2(1064, 1067, 1065);
f2(1064, 1065, 1073);
f2(1063, 1005, 1177);
f2(1049, 1061, 1062);
f2(1005, 1041, 994);
f2(1005, 1003, 1177);
f2(1008, 1022, 1007);
f2(1008, 1036, 1022);
f2(1060, 1038, 1162);
f2(1025, 1038, 1060);
f2(1089, 1031, 1048);
f2(1006, 1019, 1058);
f2(1178, 1006, 1058);
f2(972, 1006, 1178);
f2(1025, 1059, 0x0400);
f2(1059, 979, 1030);
f2(1059, 1030, 0x0400);
f2(0x0400, 1030, 1029);
f2(1058, 1019, 1057);
f2(1178, 1058, 1002);
f2(1058, 1057, 1001);
f2(1002, 1058, 1001);
f2(1001, 1057, 1055);
f2(1001, 1055, 1175);
f2(1056, 1054, 1174);
f2(1054, 1053, 1174);
f2(1174, 1053, 1176);
f2(1176, 1053, 1052);
f2(1053, 1050, 1052);
f2(1000, 1049, 998);
f2(1052, 1049, 1000);
f2(999, 1052, 1000);
f2(1052, 1051, 1049);
f2(1176, 1052, 999);
f2(1050, 1051, 1052);
f2(1049, 1062, 998);
f2(1033, 989, 1167);
f2(1048, 1167, 997);
f2(1048, 1033, 1167);
f2(1031, 1033, 1048);
f2(979, 1163, 1030);
f2(1030, 1163, 0x0404);
f2(1163, 978, 0x0404);
f2(0x0404, 978, 1047);
f2(978, 982, 1047);
f2(1027, 0x0404, 1047);
f2(1047, 982, 1046);
f2(982, 981, 1046);
f2(1047, 1046, 1045);
f2(1046, 981, 980);
f2(1046, 980, 985);
f2(1046, 985, 996);
f2(1045, 996, 1069);
f2(996, 985, 984);
f2(996, 984, 1044);
f2(1069, 996, 1044);
f2(1044, 984, 983);
f2(1044, 983, 1042);
f2(1044, 1042, 1043);
f2(1069, 1044, 1043);
f2(1069, 1043, 1067);
f2(995, 987, 986);
f2(1067, 995, 1065);
f2(1067, 1043, 995);
f2(1043, 1042, 995);
f2(1042, 988, 987);
f2(1042, 987, 995);
f2(1042, 983, 988);
f2(995, 986, 991);
f2(1034, 991, 990);
f2(995, 991, 1034);
f2(1034, 990, 989);
f2(1065, 995, 1034);
f2(1041, 1170, 994);
f2(1041, 993, 1170);
f2(1039, 1041, 1005);
f2(1039, 993, 1041);
f2(1039, 1040, 993);
f2(1162, 1037, 977);
f2(977, 1037, 1010);
f2(1162, 1038, 1037);
f2(1038, 1129, 1037);
f2(1009, 1036, 1008);
f2(1022, 1036, 1035);
f2(1009, 1010, 1036);
f2(1073, 1034, 1032);
f2(1073, 1065, 1034);
f2(1032, 1034, 1033);
f2(1033, 1034, 989);
f2(1032, 1033, 1031);
f2(1030, 0x0404, 1086);
f2(1029, 1030, 1086);
f2(1086, 0x0404, 1027);
f2(1086, 1027, 1026);
f2(1025, 1111, 1038);
f2(1111, 1025, 0x0400);
f2(1111, 0x0400, 1023);
f2(0x0400, 1029, 1023);
f2(1022, 1035, 1021);
f2(1022, 1021, 1006);
f2(1007, 1022, 1006);
f2(1006, 1021, 1020);
f2(1006, 1020, 1019);
f2(1011, 1322, 1018);
f2(1011, 1018, 1095);
f2(1018, 1322, 1321);
f2(1095, 1018, 1075);
f2(1018, 1321, 1150);
f2(1075, 1018, 1150);
f2(1317, 1017, 1318);
f2(1317, 1016, 1017);
f2(1016, 1015, 1017);
f2(1316, 1016, 1317);
f2(1138, 1014, 1155);
f2(1310, 1155, 1311);
f2(1155, 1014, 1013);
f2(1311, 1013, 1312);
f2(1155, 1013, 1311);
f2(1014, 1134, 1013);
f2(1312, 1013, 1313);
f2(1100, 1012, 1099);
f2(1012, 1011, 1099);
f2(1099, 1011, 1095);
f2(1012, 1325, 1324);
f2(1011, 1324, 1323);
f2(1012, 1324, 1011);
f2(1011, 1323, 1322);
f2(976, 977, 1010);
f2(975, 976, 1010);
f2(1160, 975, 1009);
f2(975, 1010, 1009);
f2(974, 1160, 1009);
f2(974, 1008, 973);
f2(974, 1009, 1008);
f2(973, 1008, 1007);
f2(1005, 994, 1003);
f2(1045, 1046, 996);
f2(848, 845, 759);
f2(848, 759, 757);
f2(903, 848, 757);
f2(759, 841, 764);
f2(844, 841, 759);
f2(845, 844, 759);
f2(841, 861, 764);
f2(858, 764, 861);
f2(858, 762, 764);
f2(858, 857, 762);
f2(762, 856, 760);
f2(856, 762, 857);
f2(856, 855, 760);
f2(761, 760, 855);
f2(761, 855, 868);
f2(971, 761, 868);
f2(826, 971, 872);
f2(970, 826, 872);
f2(872, 913, 970);
f2(970, 825, 826);
f2(756, 825, 970);
f2(913, 914, 970);
f2(914, 756, 970);
f2(914, 862, 756);
f2(862, 864, 756);
f2(864, 865, 687);
f2(864, 687, 756);
f2(865, 840, 687);
f2(840, 839, 687);
f2(839, 969, 687);
f2(969, 765, 687);
f2(839, 838, 969);
f2(838, 837, 969);
f2(837, 688, 969);
f2(969, 689, 765);
f2(688, 689, 969);
f2(688, 905, 781);
f2(837, 905, 688);
f2(903, 781, 905);
f2(757, 781, 903);
f2(891, 916, 894);
f2(916, 915, 894);
f2(915, 963, 880);
f2(963, 893, 880);
f2(963, 953, 893);
f2(893, 953, 895);
f2(953, 917, 895);
f2(917, 918, 895);
f2(918, 896, 895);
f2(918, 956, 896);
f2(956, 919, 896);
f2(919, 898, 896);
f2(919, 920, 898);
f2(898, 920, 899);
f2(920, 921, 899);
f2(899, 921, 897);
f2(921, 922, 897);
f2(922, 900, 897);
f2(922, 947, 900);
f2(947, 960, 900);
f2(900, 960, 885);
f2(900, 885, 884);
f2(960, 926, 885);
f2(926, 908, 885);
f2(885, 908, 886);
f2(923, 902, 908);
f2(926, 923, 908);
f2(923, 954, 902);
f2(902, 954, 901);
f2(954, 924, 901);
f2(924, 925, 901);
f2(925, 890, 901);
f2(925, 891, 890);
f2(925, 916, 891);
f2(874, 882, 871);
f2(863, 862, 914);
f2(883, 863, 914);
f2(882, 883, 914);
f2(882, 914, 913);
f2(871, 882, 913);
f2(871, 913, 872);
f2(909, 907, 912);
f2(909, 912, 866);
f2(881, 909, 866);
f2(838, 912, 837);
f2(866, 912, 839);
f2(912, 838, 839);
f2(866, 839, 840);
f2(910, 892, 847);
f2(910, 847, 849);
f2(880, 843, 847);
f2(907, 889, 906);
f2(889, 904, 906);
f2(904, 910, 849);
f2(889, 911, 904);
f2(911, 910, 904);
f2(911, 892, 910);
f2(887, 888, 881);
f2(888, 909, 881);
f2(889, 907, 909);
f2(888, 889, 909);
f2(908, 902, 887);
f2(908, 887, 886);
f2(892, 880, 847);
f2(915, 880, 892);
f2(907, 906, 912);
f2(912, 906, 905);
f2(912, 905, 837);
f2(906, 904, 903);
f2(906, 903, 905);
f2(904, 849, 903);
f2(849, 848, 903);
f2(891, 894, 892);
f2(894, 915, 892);
f2(896, 898, 875);
f2(896, 875, 850);
f2(898, 899, 875);
f2(899, 897, 876);
f2(877, 896, 850);
f2(895, 896, 877);
f2(878, 895, 877);
f2(893, 895, 878);
f2(879, 893, 878);
f2(880, 893, 879);
f2(891, 892, 911);
f2(890, 891, 911);
f2(890, 911, 889);
f2(901, 890, 889);
f2(901, 889, 888);
f2(902, 901, 888);
f2(887, 902, 888);
f2(897, 900, 876);
f2(876, 900, 884);
f2(885, 886, 883);
f2(884, 885, 883);
f2(884, 883, 882);
f2(876, 884, 874);
f2(874, 884, 882);
f2(883, 886, 863);
f2(880, 879, 843);
f2(843, 879, 860);
f2(879, 878, 860);
f2(860, 878, 852);
f2(878, 877, 852);
f2(877, 850, 852);
f2(850, 875, 873);
f2(870, 871, 971);
f2(971, 871, 872);
f2(869, 874, 870);
f2(870, 874, 871);
f2(868, 870, 971);
f2(867, 870, 868);
f2(873, 869, 867);
f2(867, 869, 870);
f2(855, 867, 868);
f2(853, 867, 855);
f2(851, 873, 853);
f2(853, 873, 867);
f2(851, 850, 873);
f2(881, 866, 865);
f2(866, 840, 865);
f2(863, 881, 864);
f2(881, 865, 864);
f2(887, 881, 863);
f2(886, 887, 863);
f2(863, 864, 862);
f2(841, 842, 861);
f2(843, 860, 859);
f2(842, 843, 859);
f2(842, 859, 858);
f2(861, 842, 858);
f2(859, 854, 857);
f2(858, 859, 857);
f2(857, 854, 856);
f2(854, 853, 856);
f2(856, 853, 855);
f2(860, 852, 859);
f2(859, 852, 854);
f2(852, 851, 854);
f2(854, 851, 853);
f2(852, 850, 851);
f2(847, 846, 849);
f2(849, 846, 845);
f2(849, 845, 848);
f2(846, 844, 845);
f2(847, 843, 842);
f2(847, 842, 846);
f2(846, 841, 844);
f2(846, 842, 841);
f2(899, 927, 875);
f2(927, 899, 876);
f2(933, 936, 940);
f2(951, 933, 958);
f2(951, 958, 965);
f2(965, 958, 957);
f2(965, 957, 918);
f2(957, 956, 918);
f2(960, 964, 926);
f2(940, 936, 964);
f2(964, 936, 926);
f2(936, 923, 926);
f2(945, 966, 946);
f2(944, 966, 945);
f2(928, 966, 944);
f2(966, 949, 946);
f2(966, 943, 949);
f2(966, 942, 943);
f2(966, 928, 942);
f2(961, 947, 948);
f2(961, 948, 930);
f2(929, 961, 930);
f2(931, 961, 929);
f2(961, 931, 962);
f2(939, 929, 930);
f2(920, 939, 921);
f2(939, 930, 921);
f2(928, 944, 938);
f2(935, 938, 937);
f2(928, 938, 941);
f2(941, 935, 934);
f2(941, 938, 935);
f2(950, 932, 925);
f2(932, 916, 925);
f2(946, 963, 932);
f2(946, 949, 963);
f2(949, 953, 963);
f2(932, 915, 916);
f2(932, 963, 915);
f2(921, 948, 922);
f2(930, 948, 921);
f2(948, 947, 922);
f2(961, 960, 947);
f2(962, 959, 940);
f2(931, 959, 962);
f2(962, 940, 961);
f2(959, 933, 940);
f2(961, 940, 964);
f2(960, 961, 964);
f2(959, 931, 958);
f2(933, 959, 958);
f2(958, 929, 957);
f2(958, 931, 929);
f2(957, 929, 956);
f2(919, 929, 939);
f2(956, 929, 919);
f2(919, 939, 920);
f2(945, 946, 955);
f2(955, 946, 950);
f2(955, 950, 924);
f2(924, 950, 925);
f2(946, 932, 950);
f2(923, 945, 954);
f2(954, 945, 955);
f2(954, 955, 924);
f2(935, 937, 933);
f2(933, 937, 936);
f2(938, 944, 937);
f2(937, 945, 923);
f2(944, 945, 937);
f2(937, 923, 936);
f2(942, 952, 917);
f2(943, 942, 917);
f2(943, 917, 953);
f2(949, 943, 953);
f2(917, 952, 918);
f2(942, 941, 952);
f2(941, 934, 952);
f2(934, 933, 951);
f2(934, 935, 933);
f2(952, 951, 965);
f2(952, 934, 951);
f2(952, 965, 918);
f2(942, 928, 941);
f2(875, 927, 967);
f2(876, 967, 927);
f2(875, 967, 968);
f2(876, 968, 967);
f2(876, 874, 968);
f2(874, 869, 968);
f2(873, 968, 869);
f2(968, 873, 875);
f2(1365, 1354, 779);
f2(779, 836, 758);
f2(758, 836, 757);
f2(759, 758, 757);
f2(757, 836, 835);
f2(757, 835, 781);
f2(835, 1421, 781);
f2(781, 1421, 688);
f2(1421, 689, 688);
f2(1422, 689, 1421);
f2(780, 1422, 1423);
f2(1355, 1418, 1419);
f2(834, 1355, 1419);
f2(834, 1419, 1420);
f2(1355, 834, 1366);
f2(1417, 1418, 1355);
f2(1381, 1425, 1426);
f2(1382, 1381, 1426);
f2(1167, 827, 829);
f2(722, 833, 831);
f2(722, 793, 833);
f2(792, 793, 722);
f2(833, 832, 831);
f2(827, 831, 686);
f2(722, 831, 827);
f2(828, 830, 1336);
f2(1170, 830, 828);
f2(756, 687, 765);
f2(752, 825, 774);
f2(825, 765, 774);
f2(826, 825, 752);
f2(756, 765, 825);
f2(694, 695, 703);
f2(697, 730, 732);
f2(691, 824, 692);
f2(692, 824, 797);
f2(816, 823, 822);
f2(823, 820, 822);
f2(822, 820, 821);
f2(821, 819, 822);
f2(819, 818, 822);
f2(818, 817, 822);
f2(817, 816, 822);
f2(808, 814, 811);
f2(814, 815, 811);
f2(815, 813, 811);
f2(813, 812, 811);
f2(812, 809, 811);
f2(810, 811, 809);
f2(810, 808, 811);
f2(800, 806, 807);
f2(805, 807, 806);
f2(805, 804, 807);
f2(807, 804, 803);
f2(807, 803, 802);
f2(801, 807, 802);
f2(800, 807, 801);
f2(710, 798, 799);
f2(799, 1424, 710);
f2(716, 1424, 799);
f2(798, 710, 712);
f2(712, 709, 711);
f2(713, 1379, 1367);
f2(709, 1379, 711);
f2(711, 1379, 713);
f2(713, 1367, 1368);
f2(1370, 798, 1369);
f2(769, 798, 1370);
f2(717, 719, 696);
f2(696, 724, 695);
f2(797, 828, 1336);
f2(721, 1174, 796);
f2(794, 725, 718);
f2(795, 725, 794);
f2(1361, 725, 1360);
f2(1360, 725, 795);
f2(794, 718, 717);
f2(793, 746, 833);
f2(790, 791, 792);
f2(792, 791, 793);
f2(738, 791, 790);
f2(787, 790, 789);
f2(790, 739, 738);
f2(787, 739, 790);
f2(788, 783, 740);
f2(788, 740, 733);
f2(733, 740, 787);
f2(731, 786, 788);
f2(737, 786, 731);
f2(788, 786, 783);
f2(784, 735, 729);
f2(729, 735, 737);
f2(684, 734, 785);
f2(785, 784, 729);
f2(734, 784, 785);
f2(1364, 684, 785);
f2(783, 782, 747);
f2(783, 747, 740);
f2(786, 782, 783);
f2(786, 750, 782);
f2(764, 758, 759);
f2(765, 689, 1422);
f2(763, 1365, 779);
f2(779, 758, 764);
f2(776, 0x0303, 770);
f2(0x0303, 769, 770);
f2(776, 770, 778);
f2(778, 770, 777);
f2(780, 1423, 715);
f2(755, 777, 1371);
f2(777, 1375, 1371);
f2(754, 776, 778);
f2(754, 778, 755);
f2(778, 777, 755);
f2(748, 775, 753);
f2(753, 776, 754);
f2(753, 0x0303, 776);
f2(747, 774, 775);
f2(752, 774, 747);
f2(773, 772, 684);
f2(684, 772, 734);
f2(772, 760, 734);
f2(773, 685, 772);
f2(774, 766, 775);
f2(766, 715, 775);
f2(0x0303, 775, 767);
f2(753, 775, 0x0303);
f2(770, 0x0300, 777);
f2(0x0300, 1375, 777);
f2(0x0303, 714, 769);
f2(770, 769, 0x0300);
f2(775, 715, 767);
f2(767, 714, 0x0303);
f2(766, 1422, 780);
f2(765, 766, 774);
f2(766, 780, 715);
f2(765, 1422, 766);
f2(762, 763, 764);
f2(763, 779, 764);
f2(763, 762, 685);
f2(772, 685, 762);
f2(772, 762, 760);
f2(734, 760, 761);
f2(751, 971, 826);
f2(761, 971, 751);
f2(755, 1371, 1372);
f2(743, 754, 745);
f2(754, 755, 745);
f2(741, 748, 753);
f2(741, 753, 754);
f2(741, 754, 743);
f2(747, 775, 748);
f2(750, 826, 752);
f2(750, 752, 782);
f2(782, 752, 747);
f2(736, 751, 749);
f2(751, 826, 749);
f2(749, 826, 750);
f2(761, 751, 736);
f2(734, 761, 736);
f2(735, 736, 749);
f2(739, 748, 741);
f2(738, 741, 743);
f2(743, 745, 742);
f2(745, 755, 744);
f2(755, 1372, 744);
f2(744, 1372, 1373);
f2(742, 745, 746);
f2(793, 742, 746);
f2(746, 745, 744);
f2(791, 738, 743);
f2(743, 742, 791);
f2(791, 742, 793);
f2(739, 741, 738);
f2(740, 747, 739);
f2(747, 748, 739);
f2(787, 740, 739);
f2(735, 750, 737);
f2(737, 750, 786);
f2(735, 749, 750);
f2(784, 736, 735);
f2(734, 736, 784);
f2(733, 787, 789);
f2(733, 789, 700);
f2(699, 733, 700);
f2(732, 788, 733);
f2(732, 733, 699);
f2(730, 788, 732);
f2(708, 731, 788);
f2(728, 737, 731);
f2(730, 708, 788);
f2(729, 737, 728);
f2(1364, 785, 1363);
f2(1363, 785, 727);
f2(785, 729, 727);
f2(727, 729, 726);
f2(726, 729, 728);
f2(726, 728, 719);
f2(719, 728, 707);
f2(724, 719, 707);
f2(1363, 727, 1362);
f2(1361, 1362, 725);
f2(725, 726, 718);
f2(725, 727, 726);
f2(1362, 727, 725);
f2(718, 726, 719);
f2(724, 707, 704);
f2(790, 792, 723);
f2(723, 792, 722);
f2(789, 790, 723);
f2(700, 789, 723);
f2(1434, 691, 720);
f2(1434, 796, 691);
f2(696, 719, 724);
f2(724, 704, 695);
f2(718, 719, 717);
f2(716, 1423, 1424);
f2(715, 1423, 716);
f2(767, 715, 716);
f2(767, 716, 714);
f2(714, 799, 769);
f2(769, 799, 798);
f2(714, 716, 799);
f2(1424, 1425, 710);
f2(710, 709, 712);
f2(710, 1425, 709);
f2(704, 708, 730);
f2(707, 708, 704);
f2(707, 731, 708);
f2(728, 731, 707);
f2(704, 730, 697);
f2(706, 704, 697);
f2(706, 697, 705);
f2(695, 704, 706);
f2(695, 706, 703);
f2(700, 723, 701);
f2(701, 723, 722);
f2(697, 732, 698);
f2(794, 717, 696);
f2(694, 696, 695);
f2(1174, 691, 796);
f2(1379, 1378, 1367);
f2(1381, 1379, 709);
f2(1425, 1381, 709);
f2(833, 1373, 1374);
f2(746, 1373, 833);
f2(746, 744, 1373);
f2(833, 1374, 832);
f2(831, 1335, 686);
f2(831, 832, 1335);
f2(1360, 795, 1359);
f2(1354, 836, 779);
f2(1335, 1374, 1356);
f2(832, 1374, 1335);
f2(660, 39, 1428);
f2(1428, 39, 1427);
f2(39, 661, 1427);
f2(1435, 120, 1369);
f2(31, 120, 1435);
f2(1429, 1436, 1369);
f2(798, 1438, 1369);
f2(798, 712, 1438);
f2(1437, 1429, 1369);
f2(1434, 1433, 1431);
f2(1434, 1431, 1430);
f2(1432, 1434, 1430);
f2(1436, 1435, 1369);
f2(1438, 1437, 1369);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 113
//whitel (whitel)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class whitel extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function whitel(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(-0.368247, 1.141258, 3.20341);
v(-0.329784, 1.19972, 3.210593);
v(-0.280029, 1.248456, 3.216421);
v(-0.22098, 1.291622, 3.217068);
v(-0.238426, 1.306941, 3.145463);
v(-0.152802, 1.325366, 3.218138);
v(-0.668897, 0.099141, 0.085683);
v(-0.212126, 0.308412, -0.308632);
v(-0.196889, 0.287442, -0.413151);
v(-0.147416, -0.083324, -0.923803);
v(-0.186654, 0.25699, -0.513809);
v(-0.179185, 0.2155, -0.613017);
v(-0.168149, 0.093082, -0.795981);
v(-0.152987, 0.014436, -0.862807);
v(-0.333493, 0.322457, 0.01179);
v(-0.463392, 0.276425, 0.083882);
v(-0.272008, 0.328163, -0.105281);
v(-0.249893, -0.346485, 1.299893);
v(-0.207436, 0.829281, 3.604215);
v(-0.148513, 0.807638, 3.650396);
v(-0.401708, 0.990672, 3.206774);
v(-0.386261, 0.953386, 3.278677);
v(-0.392861, 1.070601, 3.199768);
v(-0.247206, 0.848347, 3.560709);
v(-0.234124, 0.321143, -0.209498);
v(-0.174064, 0.1619, -0.709668);
v(-0.259783, -0.107334, 1.489024);
v(-0.154956, 0.164925, 1.862338);
v(-0.273168, 0.790874, 1.795281);
v(-0.323155, 0.685447, 1.806655);
v(-0.333619, 0.448848, 1.945523);
v(-0.252225, 0.350439, 2.021512);
v(-0.39151, 1.051522, 2.497679);
v(-0.330819, 1.111227, 2.459112);
v(-0.363213, 0.677845, 2.375616);
v(-0.181774, 0.496888, 2.396867);
v(-0.149407, 0.716455, 1.397656);
v(-0.363399, 0.733741, 2.103145);
v(-0.127249, 0.627623, 2.831422);
v(-0.093297, 1.362266, 3.014383);
v(-0.440221, 1.005371, 2.837477);
v(-0.197288, 1.195207, 2.446392);
v(-0.297628, 1.286609, 2.759154);
v(-0.309897, 0.759068, 3.237223);
v(-0.384586, 0.806722, 2.808692);
v(-0.268185, 0.692995, 2.847056);
v(-0.261033, 0.603868, 2.531499);
v(-0.38723, 0.87976, 3.216053);
v(-0.188002, 0.669186, 3.32885);
v(-0.160364, 0.732049, 3.587353);
v(-0.385971, 1.187427, 3.098456);
v(-0.454287, 1.206825, 2.779051);
v(-0.412951, 1.135342, 2.601366);
v(-0.373076, 1.188152, 2.59684);
v(-0.325746, 1.232255, 2.630028);
v(-0.292658, 1.321733, 2.929255);
v(-0.283173, 1.316461, 3.071828);
v(-0.315034, 1.269175, 3.14978);
v(-0.196994, 0.513368, 0.859969);
v(-0.150597, 0.372806, 0.13901);
v(-0.26668, 0.682674, 1.522284);
v(-0.337252, 0.477457, 0.947996);
v(-0.211566, 0.646052, 1.298719);
v(-0.503956, 0.282734, 1.219529);
v(-0.561396, 0.25109, 0.523578);
v(-0.735462, 0.054854, 0.449921);
v(-0.458703, 0.131473, 1.3806);
v(-0.952169, -0.295204, 0.487637);
v(-0.847038, -0.067293, 0.834072);
v(-0.899048, -0.129878, 0.639591);
v(-0.97489, -0.994824, 1.648364);
v(-0.954122, -0.995792, 1.513142);
v(-0.975209, -0.801156, 1.653917);
v(-0.970549, -0.858667, 1.690592);
v(-0.967937, -0.907775, 1.706207);
v(-0.967766, -0.953103, 1.706631);
v(-0.989616, -1.009029, 1.553993);
v(-0.980217, -1.00286, 1.621039);
v(-1.098861, -0.643254, 0.776619);
v(-0.91678, -0.938738, 1.637539);
v(-1.051354, -0.884172, 1.114321);
v(-1.088764, -0.71181, 0.846353);
v(-1.026833, -0.530043, 1.290692);
v(-1.070697, -0.41993, 0.978399);
v(-0.932224, -0.82862, 1.652679);
v(-0.312863, 0.307856, 1.809265);
v(-0.378086, 0.288828, 1.609548);
v(-0.363947, 0.473402, 1.678322);
v(-0.359433, 0.550094, 1.512181);
v(-0.410716, 0.30886, 0.194583);
v(-0.576419, 0.206197, 0.105986);
v(-0.760792, -0.041695, -0.011329);
v(-0.696605, -0.890735, 0.445577);
v(-0.619003, -0.774422, 0.692767);
v(-0.569442, -0.714234, 0.799102);
v(-0.313207, -0.43253, 1.199985);
v(-0.261994, 0.149446, 1.731761);
v(-0.409825, -0.088086, 1.354917);
v(-0.997821, -1.00715, 1.495496);
v(-0.799827, -0.714451, 0.457503);
v(-0.517237, -0.644001, 0.90374);
v(-0.412015, 0.456381, 1.23728);
v(-0.859567, -0.249312, 0.040636);
v(-0.94414, -0.419587, 0.492665);
v(-0.786034, -0.319962, 0.950975);
v(-0.942581, -0.264254, 0.644673);
v(-0.804535, -0.069739, 0.962066);
v(-0.891253, -0.196748, 0.82236);
v(-0.777567, -0.152847, 1.036069);
v(-0.482324, 1.537306, 2.98084);
v(-0.583197, 1.548779, 2.587083);
v(-0.462272, 1.449337, 2.700662);
v(-0.612704, 1.577266, 2.740559);
v(-0.574071, 1.65773, 2.879551);
v(-0.345328, 1.3478, 2.888366);
v(-0.339311, 1.346642, 3.072048);
v(-0.406929, 1.302366, 3.06037);
v(-0.443685, 1.238984, 2.63121);
v(-0.389488, 1.285171, 2.648962);
v(-0.078712, 1.347079, 3.214291);
v(-0.81646, -0.197999, -0.129542);
v(-0.842984, -0.329005, -0.219077);
v(-0.758178, -1.013909, -4.3E-5);
v(-0.761087, -1.023626, -0.099524);
v(-0.762352, -1.02504, -0.195889);
v(-0.827533, -0.920576, -0.154082);
v(-0.887553, -0.698264, 0.02574);
v(-0.72654, -0.94345, 0.299957);
v(-0.742181, -0.97361, 0.199957);
v(-0.900316, -0.5075, -0.044529);
v(-0.752363, -0.997154, 0.099956);
v(-0.845922, -0.749092, -0.366009);
v(-0.864428, -0.731994, -0.291137);
v(-0.847048, -0.820222, -0.291776);
v(-0.832377, -0.869921, -0.280004);
v(-0.827366, -0.843187, -0.374052);
v(-0.866204, -0.77987, -0.199182);
v(-0.77972, -0.961004, -0.36195);
v(-0.848176, -0.789429, -0.329693);
v(-0.819765, -0.778087, -0.437652);
v(-0.845986, -0.586227, -0.380921);
v(-0.767333, -1.009144, -0.282296);
v(-0.825153, -0.8382, 0.192634);
v(-0.873396, -0.651739, 0.235659);
v(-0.965984, -1.07104, 1.667113);
v(-1.003565, -0.988871, 1.635321);
v(-0.992402, -0.980531, 1.650224);
v(-0.967824, -0.975642, 1.656327);
v(-0.942961, -0.981709, 1.640489);
v(-0.940001, -0.993035, 1.617971);
v(-0.951163, -1.001374, 1.603068);
v(-0.970202, -1.005732, 1.597172);
v(-0.989844, -1.004445, 1.602533);
v(-1.000593, -0.926996, 1.690735);
v(-0.990439, -0.91031, 1.696626);
v(-0.97191, -0.901876, 1.697961);
v(-0.958456, -0.967009, 1.766767);
v(-0.952085, -0.904915, 1.694231);
v(-0.938534, -0.918267, 1.686859);
v(-0.93645, -0.937091, 1.678569);
v(-0.946589, -0.953518, 1.672772);
v(-0.965116, -0.961951, 1.671437);
v(-0.984943, -0.958912, 1.675167);
v(-0.971284, -0.807158, 1.747399);
v(-1.002934, -0.841837, 1.663913);
v(-0.987962, -0.830458, 1.656004);
v(-0.967712, -0.828792, 1.65416);
v(-0.949919, -0.837475, 1.659088);
v(-0.941382, -0.853189, 1.668904);
v(-0.945359, -0.869935, 1.67986);
v(-0.960034, -0.881253, 1.687748);
v(-0.980582, -0.882979, 1.689612);
v(-0.998374, -0.874296, 1.684684);
v(-1.002587, -0.998005, 1.617105);
v(-0.998494, -0.94556, 1.682539);
v(-1.006911, -0.858583, 1.674869);
v(-0.131758, 1.245901, 3.399701);
v(-0.280774, 0.828848, 3.492676);
v(-0.067278, 1.264064, 3.399953);
v(-0.337751, 1.046591, 3.390706);
v(-0.200089, 1.118112, 3.501159);
v(-0.273138, 0.842924, 3.515299);
v(-1.10166, -0.41891, 0.757631);
v(-1.093581, -0.406707, 0.815288);
v(-1.106797, -0.439224, 0.72091);
v(-1.109101, -0.529901, 0.704094);
v(-0.962202, -0.525038, 1.126053);
v(-0.942726, -0.576464, 1.100952);
v(-0.938198, -0.663264, 1.058585);
v(-0.958193, -0.731003, 1.025522);
v(-0.979621, -0.766935, 1.007984);
v(-0.946388, -0.665937, 1.462032);
v(-0.967451, -0.945976, 1.322012);
v(-0.940336, -0.920178, 1.334911);
v(-0.920365, -0.887615, 1.351193);
v(-0.924797, -0.692415, 1.448793);
v(-0.93882, -0.929307, 1.362304);
v(-0.972282, -0.647462, 1.471269);
v(-0.909436, -0.726722, 1.431639);
v(-0.899851, -0.807895, 1.391053);
v(-0.899574, -0.820089, 1.416222);
v(-0.729177, 0.026188, 0.954263);
v(-0.691476, 0.01885, 1.032906);
v(-0.915881, -0.484536, 0.403324);
v(-0.919306, -0.3543, 0.340174);
v(-0.6309, 0.083568, 1.020866);
v(-0.577855, -0.056057, 1.149289);
v(-0.606433, -0.012182, 1.122368);
v(-0.631763, -0.033635, 1.12091);
v(-0.658312, 0.109824, 0.91021);
v(-0.642924, 0.101317, 0.975457);
v(-0.934037, -0.352434, 0.670311);
v(-0.933878, -0.405899, 0.619023);
v(-0.848278, -0.4938, 0.66255);
v(-0.862488, -0.488709, 0.65203);
v(-0.859309, -0.398821, 0.78638);
v(-0.877648, -0.375963, 0.779541);
v(-0.68004, 1.706026, 2.57392);
v(-0.664859, 1.679809, 2.544915);
v(-0.689805, 1.749578, 2.622027);
v(-0.638825, 1.704033, 2.572109);
v(-0.609555, -0.287361, 1.046966);
v(-0.974897, -0.56768, 0.851299);
v(-0.988004, -0.593102, 0.825911);
v(-0.874711, -0.541516, 0.393499);
v(-0.816325, -0.503947, 0.678878);
v(-0.834676, -0.493163, 0.68853);
v(-0.918767, -0.360789, 0.735423);
v(-0.885945, -0.403254, 0.776505);
v(-0.858988, -0.442414, 0.774323);
v(-0.863299, -0.418598, 0.778089);
v(-0.87165, -0.399775, 0.777654);
v(-0.88043, -0.428013, 0.786319);
v(-0.92418, -0.373981, 0.747158);
v(-0.935483, -0.36968, 0.725523);
v(-0.584512, -0.169578, 1.124876);
v(-0.661841, 0.048971, 1.007268);
v(-0.099466, 1.135558, 3.546152);
v(-0.342148, 0.8997, 3.398536);
v(-0.312916, 1.021541, 3.449333);
v(-0.302461, 1.049641, 3.449773);
v(-0.311976, 1.064098, 3.429566);
v(-0.310479, 0.989794, 3.473488);
v(-0.330162, 1.039212, 3.408923);
v(-0.345906, 0.965211, 3.39646);
v(-0.285051, 0.997699, 3.506628);
v(-0.670378, 1.709565, 2.518792);
v(-0.727415, 1.792177, 2.459591);
v(-0.701853, 1.776227, 2.539443);
v(-0.7311, 1.794161, 2.444099);
v(-0.710682, 1.759914, 2.477742);
v(-0.705942, 1.758919, 2.475472);
v(-0.70791, 1.799787, 2.563601);
v(-0.703918, 1.805101, 2.562251);
v(-0.691877, 1.783572, 2.567013);
v(-0.658078, 1.712786, 2.536838);
v(-0.736279, 1.838506, 2.551214);
v(-0.727835, 1.833174, 2.547331);
v(-0.699922, 1.782457, 2.561442);
v(-0.716912, 1.833394, 2.549927);
v(-0.724222, 1.835545, 2.544591);
v(-0.7146, 1.802883, 2.571075);
v(-0.689842, 1.797891, 2.575878);
v(-0.68943, 1.772686, 2.556537);
v(-0.68874, 1.7434, 2.496405);
v(-0.781546, 1.915831, 2.488242);
v(-1.085039, -0.560457, 0.718292);
v(-1.094629, -0.42535, 0.741508);
v(-1.070535, -0.409035, 0.816823);
v(-1.032922, -0.486737, 0.715213);
v(-1.023366, -0.426563, 0.77462);
v(-1.007298, -0.436727, 0.823618);
v(-0.974824, -0.469165, 0.85168);
v(-1.031681, -0.518994, 0.719186);
v(-1.035356, -0.558967, 0.740571);
v(-1.021373, -0.437606, 0.832069);
v(-1.045473, -0.432577, 0.780419);
v(-1.05071, -0.451982, 0.742431);
v(-1.056091, -0.469647, 0.726391);
v(-1.056003, -0.501451, 0.718497);
v(-1.047273, -0.538624, 0.727994);
v(-1.024848, -0.596816, 0.776254);
v(-1.017084, -0.604011, 0.794798);
v(-0.971241, -0.53374, 0.866735);
v(-0.949843, -0.389199, 0.667311);
v(-0.654115, -0.370602, 0.955209);
v(-0.8598, -0.549757, 0.442233);
v(-0.775407, -0.522054, 0.682204);
v(-0.772018, 0.011124, 0.769631);
v(-0.722757, -0.446774, 0.840898);
v(-0.823105, -0.554673, 0.550715);
v(-0.895788, -0.505792, 0.342615);
v(-0.906588, -0.452599, 0.310411);
v(-0.800817, -0.045395, 0.603);
v(-0.826325, -0.104028, 0.501671);
v(-0.902676, -0.417246, 0.290215);
v(-0.648307, 0.073189, 0.990194);
v(-0.668896, 0.057593, 0.973789);
v(-0.583216, -0.121228, 1.140179);
v(-0.590566, -0.05994, 1.141544);
v(-0.640826, 0.047826, 1.036746);
v(-0.568418, -0.133621, 1.145169);
v(-0.587019, -0.2018, 1.109107);
v(-0.596012, -0.232401, 1.090577);
v(-0.706926, 0.052695, 0.844235);
v(-0.737354, 0.028686, 0.751105);
v(-0.757974, 0.021585, 0.790367);
v(-0.721683, 0.042931, 0.799286);
v(-0.704813, 0.052255, 0.877705);
v(-0.673522, 0.070302, 0.925165);
v(-0.72039, 0.045037, 0.774168);
v(-0.898008, -0.402468, 0.261306);
v(-0.897036, -0.35316, 0.300596);
v(-0.865348, -0.237055, 0.34593);
v(-0.900727, -0.370947, 0.298351);
v(-0.885979, -0.312106, 0.305921);
v(-0.687585, 0.070936, 0.868564);
v(-0.941919, -0.374905, 0.674501);
v(-0.943158, -0.386202, 0.658809);
v(-0.899486, -0.384931, 0.766063);
v(-0.846413, -0.477593, 0.745314);
v(-0.846603, -0.491838, 0.701417);
v(-0.877433, -0.49624, 0.669156);
v(-0.919266, -0.460814, 0.637266);
v(-0.904359, -0.477099, 0.644411);
v(-0.934724, -0.360965, 0.694338);
v(-0.924898, -0.345329, 0.709342);
v(-0.892335, -0.37296, 0.764639);
v(-0.91073, -0.35222, 0.740901);
v(-0.841748, -0.441338, 0.771538);
v(-0.831012, -0.469972, 0.744936);
v(-0.936799, -0.412099, 0.63325);
v(-0.90175, -0.46516, 0.62754);
v(-0.77761, -0.494044, 0.73049);
v(-0.804136, -0.545161, 0.605868);
v(-0.94386, -0.370995, 0.702001);
v(-0.940205, -0.436126, 0.640941);
v(-0.847918, -0.490147, 0.725189);
v(-0.855393, -0.494213, 0.684056);
v(-0.849008, -0.460624, 0.762852);
v(-0.949045, -0.407252, 0.652111);
v(-0.887346, -0.482191, 0.647242);
v(-0.748249, 1.883371, 2.567466);
v(-0.732794, 1.853833, 2.598248);
v(-0.723165, 1.814646, 2.591112);
v(-0.769716, 1.900012, 2.522688);
v(-0.748115, 1.885444, 2.560516);
v(-0.756156, 1.892308, 2.525469);
v(-0.717155, 1.849326, 2.626112);
v(-0.706021, 1.771481, 2.534224);
v(-0.703817, 1.779106, 2.59888);
v(-0.673668, 1.771903, 2.584836);
v(-0.695406, 1.750303, 2.57224);
v(-0.681593, 1.755529, 2.532968);
v(-0.695141, 1.772549, 2.535263);
v(-0.672819, 1.761046, 2.574085);
v(-0.700483, 1.770411, 2.564821);
v(-0.703583, 1.781443, 2.575445);
v(-0.564378, -0.168396, 1.137661);
v(-0.561067, -0.087373, 1.161525);
v(-0.620808, 0.022372, 1.088272);
v(-0.659804, -0.001376, 1.091949);
v(-0.678957, 0.013494, 1.052257);
v(-0.762657, 0.020392, 0.834211);
v(-0.829401, -0.05099, 0.645366);
v(-0.85439, -0.095484, 0.573574);
v(-0.748753, 0.014997, 0.693255);
v(-0.655643, 0.131805, 0.8665);
v(-0.841127, -0.153203, 0.428596);
v(-0.892499, -0.208007, 0.427941);
v(-0.879495, -0.144116, 0.51642);
v(-0.911974, -0.285843, 0.372302);
v(-0.862831, -0.232593, 0.331635);
v(-0.880935, -0.306527, 0.288005);
v(-0.892756, -0.362933, 0.276415);
v(-0.92947, -0.401041, 0.34096);
v(-0.902203, -0.461305, 0.27422);
v(-0.89083, -0.524106, 0.30696);
v(-0.866458, -0.57783, 0.365934);
v(-0.830328, -0.569638, 0.498859);
v(-0.920017, -0.46066, 0.361813);
v(-0.901548, -0.508909, 0.435805);
v(-0.883794, -0.514619, 0.526315);
v(-0.888231, -0.474709, 0.625098);
v(-0.854788, -0.523685, 0.57566);
v(-0.91319, -0.448245, 0.605233);
v(-0.920014, -0.439395, 0.622985);
v(-0.940314, -0.373274, 0.637023);
v(-0.92071, -0.32374, 0.72143);
v(-0.899697, -0.34535, 0.760341);
v(-0.842403, -0.420448, 0.78655);
v(-0.823438, -0.454739, 0.7661);
v(-0.824738, -0.48116, 0.72389);
v(-0.787706, -0.469325, 0.77216);
v(-0.770591, -0.54249, 0.666512);
v(-0.74564, -0.499912, 0.758463);
v(-0.701217, -0.474871, 0.828384);
v(-0.660091, -0.408459, 0.918369);
v(-0.611722, -0.320612, 1.021558);
v(-0.579515, -0.237026, 1.095243);
v(-0.622418, -0.129745, 1.133915);
v(-0.627906, -0.069194, 1.137699);
v(-0.619327, -0.190434, 1.112314);
v(-0.809564, -0.072158, 0.519316);
v(-0.782686, -0.025445, 0.595595);
v(-1.109791, -0.458682, 0.698091);
v(-1.104665, -0.510016, 0.698213);
v(-1.045544, -0.418654, 0.942487);
v(-1.080299, -0.407052, 0.909408);
v(-1.034162, -0.615031, 0.775928);
v(-1.105425, -0.583368, 0.730074);
v(-1.000045, -0.462304, 0.868973);
v(-0.990299, -0.492554, 0.877936);
v(-0.978705, -0.565822, 0.88088);
v(-0.994015, -0.627151, 0.866222);
v(-1.028059, -0.789783, 0.964753);
v(-0.97226, -0.736358, 0.991347);
v(-0.942352, -0.652928, 1.032373);
v(-0.954134, -0.535809, 1.090311);
v(-0.964184, -0.668541, 1.490601);
v(-0.916056, -0.720373, 1.465472);
v(-0.91232, -0.89115, 1.381119);
v(-1.019425, -0.971238, 1.341604);
v(-1.038255, -0.808984, 0.98746);
v(-1.00821, -0.792997, 0.995263);
v(-0.99692, -0.960487, 1.314756);
v(-0.988259, -0.496299, 1.14008);
v(-1.049698, -0.459685, 1.127908);
v(-1.046213, -0.470408, 1.152717);
v(-1.069439, -0.812643, 0.985674);
v(-0.083982, 1.014574, 3.633521);
v(-0.149042, 1.058493, 3.580708);
v(-0.24905, 1.174074, 3.398861);
v(-0.191631, 1.215999, 3.399173);
v(-0.318552, 1.087182, 3.407881);
v(-0.346839, 1.008114, 3.375202);
v(-0.356, 0.93906, 3.369481);
v(-0.348739, 0.906699, 3.375266);
v(-0.320098, 0.837988, 3.407752);
v(-0.29545, 0.823186, 3.455111);
v(-0.285561, 1.081024, 3.456715);
v(-0.269302, 0.860544, 3.527016);
v(-0.654235, 1.673454, 2.537165);
v(-0.693701, 1.791473, 2.66847);
v(-0.682517, 1.807367, 2.686037);
v(-0.66123, 1.792837, 2.666176);
v(-0.644651, 1.751624, 2.622905);
v(-0.641923, 1.682183, 2.548084);
v(-0.673227, -0.212434, 1.089042);
v(-0.674078, -0.275965, 1.050419);
v(-1.072974, -0.798079, 0.960613);
v(-0.806249, -0.573375, 0.563141);
v(-1.000772, -0.639456, 1.475272);
v(-0.997615, -0.65603, 1.497213);
v(-1.023476, -0.964504, 1.312748);
v(-0.264744, 1.053374, 3.499142);
v(-0.759476, -0.413209, 0.872405);
v(-0.850322, -0.186, 0.388016);
v(-0.899275, -0.427429, 0.233294);
v(-0.971483, -0.974935, 1.684199);
v(-1.004106, -0.474906, 1.120397);
v(-1.009195, -0.482439, 1.146845);
v(0.368247, 1.141258, 3.20341);
v(0.329784, 1.19972, 3.210593);
v(0.280029, 1.248456, 3.216421);
v(0.22098, 1.291622, 3.217068);
v(0.238426, 1.306941, 3.145463);
v(0.152802, 1.325366, 3.218138);
v(0.668897, 0.099141, 0.085683);
v(0.212126, 0.308412, -0.308632);
v(0.196889, 0.287442, -0.413151);
v(0.147416, -0.083324, -0.923803);
v(0.186654, 0.25699, -0.513809);
v(0.179185, 0.2155, -0.613017);
v(0.168149, 0.093082, -0.795981);
v(0.152987, 0.014436, -0.862807);
v(0.333493, 0.322457, 0.01179);
v(0.463392, 0.276425, 0.083882);
v(0.272008, 0.328163, -0.105281);
v(0.249893, -0.346485, 1.299893);
v(0.207436, 0.829281, 3.604215);
v(0.148513, 0.807638, 3.650396);
v(0.401708, 0.990672, 3.206774);
v(0.386261, 0.953386, 3.278677);
v(0.392861, 1.070601, 3.199768);
v(0.247206, 0.848347, 3.560709);
v(0.234124, 0.321143, -0.209498);
v(0.174064, 0.1619, -0.709668);
v(0.259783, -0.107334, 1.489024);
v(0.154956, 0.164925, 1.862338);
v(0.273168, 0.790874, 1.795281);
v(0.323155, 0.685447, 1.806655);
v(0.333619, 0.448848, 1.945523);
v(0.252225, 0.350439, 2.021512);
v(0.39151, 1.051522, 2.497679);
v(0.330819, 1.111227, 2.459112);
v(0.363213, 0.677845, 2.375616);
v(0.181774, 0.496888, 2.396867);
v(0.149407, 0.716455, 1.397656);
v(0.363399, 0.733741, 2.103145);
v(0.127249, 0.627623, 2.831422);
v(0.093297, 1.362266, 3.014383);
v(0.440221, 1.005371, 2.837477);
v(0.197288, 1.195207, 2.446392);
v(0.297628, 1.286609, 2.759154);
v(0.309897, 0.759068, 3.237223);
v(0.384586, 0.806722, 2.808692);
v(0.268185, 0.692995, 2.847056);
v(0.261033, 0.603868, 2.531499);
v(0.38723, 0.87976, 3.216053);
v(0.188002, 0.669186, 3.32885);
v(0.160364, 0.732049, 3.587353);
v(0.385971, 1.187427, 3.098456);
v(0.454287, 1.206825, 2.779051);
v(0.412951, 1.135342, 2.601366);
v(0.373076, 1.188152, 2.59684);
v(0.325746, 1.232255, 2.630028);
v(0.292658, 1.321733, 2.929255);
v(0.283173, 1.316461, 3.071828);
v(0.315034, 1.269175, 3.14978);
v(0.196994, 0.513368, 0.859969);
v(0.150597, 0.372806, 0.13901);
v(0.26668, 0.682674, 1.522284);
v(0.337252, 0.477457, 0.947996);
v(0.211566, 0.646052, 1.298719);
v(0.503956, 0.282734, 1.219529);
v(0.561396, 0.25109, 0.523578);
v(0.735462, 0.054854, 0.449921);
v(0.458703, 0.131473, 1.3806);
v(0.952169, -0.295204, 0.487637);
v(0.847038, -0.067293, 0.834072);
v(0.899048, -0.129878, 0.639591);
v(0.97489, -0.994824, 1.648364);
v(0.954122, -0.995792, 1.513142);
v(0.975209, -0.801156, 1.653917);
v(0.970549, -0.858667, 1.690592);
v(0.967937, -0.907775, 1.706207);
v(0.967766, -0.953103, 1.706631);
v(0.989616, -1.009029, 1.553993);
v(0.980217, -1.00286, 1.621039);
v(1.098861, -0.643254, 0.776619);
v(0.91678, -0.938738, 1.637539);
v(1.051354, -0.884172, 1.114321);
v(1.088764, -0.71181, 0.846353);
v(1.026833, -0.530043, 1.290692);
v(1.070697, -0.41993, 0.978399);
v(0.932224, -0.82862, 1.652679);
v(0.312863, 0.307856, 1.809265);
v(0.378086, 0.288828, 1.609548);
v(0.363947, 0.473402, 1.678322);
v(0.359433, 0.550094, 1.512181);
v(0.410716, 0.30886, 0.194583);
v(0.576419, 0.206197, 0.105986);
v(0.760792, -0.041695, -0.011329);
v(0.696605, -0.890735, 0.445577);
v(0.619003, -0.774422, 0.692767);
v(0.569442, -0.714234, 0.799102);
v(0.313207, -0.43253, 1.199985);
v(0.261994, 0.149446, 1.731761);
v(0.409825, -0.088086, 1.354917);
v(0.997821, -1.00715, 1.495496);
v(0.799827, -0.714451, 0.457503);
v(0.517237, -0.644001, 0.90374);
v(0.412015, 0.456381, 1.23728);
v(0.859567, -0.249312, 0.040636);
v(0.94414, -0.419587, 0.492665);
v(0.786034, -0.319962, 0.950975);
v(0.942581, -0.264254, 0.644673);
v(0.804535, -0.069739, 0.962066);
v(0.891253, -0.196748, 0.82236);
v(0.777567, -0.152847, 1.036069);
v(0.482324, 1.537306, 2.98084);
v(0.583197, 1.548779, 2.587083);
v(0.462272, 1.449337, 2.700662);
v(0.612704, 1.577266, 2.740559);
v(0.574071, 1.65773, 2.879551);
v(0.345328, 1.3478, 2.888366);
v(0.339311, 1.346642, 3.072048);
v(0.406929, 1.302366, 3.06037);
v(0.443685, 1.238984, 2.63121);
v(0.389488, 1.285171, 2.648962);
v(0.078712, 1.347079, 3.214291);
v(0.81646, -0.197999, -0.129542);
v(0.842984, -0.329005, -0.219077);
v(0.758178, -1.013909, -4.3E-5);
v(0.761087, -1.023626, -0.099524);
v(0.762352, -1.02504, -0.195889);
v(0.827533, -0.920576, -0.154082);
v(0.887553, -0.698264, 0.02574);
v(0.72654, -0.94345, 0.299957);
v(0.742181, -0.97361, 0.199957);
v(0.900316, -0.5075, -0.044529);
v(0.752363, -0.997154, 0.099956);
v(0.845922, -0.749092, -0.366009);
v(0.864428, -0.731994, -0.291137);
v(0.847048, -0.820222, -0.291776);
v(0.832377, -0.869921, -0.280004);
v(0.827366, -0.843187, -0.374052);
v(0.866204, -0.77987, -0.199182);
v(0.77972, -0.961004, -0.36195);
v(0.848176, -0.789429, -0.329693);
v(0.819765, -0.778087, -0.437652);
v(0.845986, -0.586227, -0.380921);
v(0.767333, -1.009144, -0.282296);
v(0.825153, -0.8382, 0.192634);
v(0.873396, -0.651739, 0.235659);
v(0.965984, -1.07104, 1.667113);
v(1.003565, -0.988871, 1.635321);
v(0.992402, -0.980531, 1.650224);
v(0.967824, -0.975642, 1.656327);
v(0.942961, -0.981709, 1.640489);
v(0.940001, -0.993035, 1.617971);
v(0.951163, -1.001374, 1.603068);
v(0.970202, -1.005732, 1.597172);
v(0.989844, -1.004445, 1.602533);
v(1.000593, -0.926996, 1.690735);
v(0.990439, -0.91031, 1.696626);
v(0.97191, -0.901876, 1.697961);
v(0.958456, -0.967009, 1.766767);
v(0.952085, -0.904915, 1.694231);
v(0.938534, -0.918267, 1.686859);
v(0.93645, -0.937091, 1.678569);
v(0.946589, -0.953518, 1.672772);
v(0.965116, -0.961951, 1.671437);
v(0.984943, -0.958912, 1.675167);
v(0.971284, -0.807158, 1.747399);
v(1.002934, -0.841837, 1.663913);
v(0.987962, -0.830458, 1.656004);
v(0.967712, -0.828792, 1.65416);
v(0.949919, -0.837475, 1.659088);
v(0.941382, -0.853189, 1.668904);
v(0.945359, -0.869935, 1.67986);
v(0.960034, -0.881253, 1.687748);
v(0.980582, -0.882979, 1.689612);
v(0.998374, -0.874296, 1.684684);
v(1.002587, -0.998005, 1.617105);
v(0.998494, -0.94556, 1.682539);
v(1.006911, -0.858583, 1.674869);
v(0.131758, 1.245901, 3.399701);
v(0.280774, 0.828848, 3.492676);
v(0.067278, 1.264064, 3.399953);
v(0.337751, 1.046591, 3.390706);
v(0.200089, 1.118112, 3.501159);
v(0.273138, 0.842924, 3.515299);
v(1.10166, -0.41891, 0.757631);
v(1.093581, -0.406707, 0.815288);
v(1.106797, -0.439224, 0.72091);
v(1.109101, -0.529901, 0.704094);
v(0.962202, -0.525038, 1.126053);
v(0.942726, -0.576464, 1.100952);
v(0.938198, -0.663264, 1.058585);
v(0.958193, -0.731003, 1.025522);
v(0.979621, -0.766935, 1.007984);
v(0.946388, -0.665937, 1.462032);
v(0.967451, -0.945976, 1.322012);
v(0.940336, -0.920178, 1.334911);
v(0.920365, -0.887615, 1.351193);
v(0.924797, -0.692415, 1.448793);
v(0.93882, -0.929307, 1.362304);
v(0.972282, -0.647462, 1.471269);
v(0.909436, -0.726722, 1.431639);
v(0.899851, -0.807895, 1.391053);
v(0.899574, -0.820089, 1.416222);
v(0.729177, 0.026188, 0.954263);
v(0.691476, 0.01885, 1.032906);
v(0.915881, -0.484536, 0.403324);
v(0.919306, -0.3543, 0.340174);
v(0.6309, 0.083568, 1.020866);
v(0.577855, -0.056057, 1.149289);
v(0.606433, -0.012182, 1.122368);
v(0.631763, -0.033635, 1.12091);
v(0.658312, 0.109824, 0.91021);
v(0.642924, 0.101317, 0.975457);
v(0.934037, -0.352434, 0.670311);
v(0.933878, -0.405899, 0.619023);
v(0.848278, -0.4938, 0.66255);
v(0.862488, -0.488709, 0.65203);
v(0.859309, -0.398821, 0.78638);
v(0.877648, -0.375963, 0.779541);
v(0.68004, 1.706026, 2.57392);
v(0.664859, 1.679809, 2.544915);
v(0.689805, 1.749578, 2.622027);
v(0.638825, 1.704033, 2.572109);
v(0.609555, -0.287361, 1.046966);
v(0.974897, -0.56768, 0.851299);
v(0.988004, -0.593102, 0.825911);
v(0.874711, -0.541516, 0.393499);
v(0.816325, -0.503947, 0.678878);
v(0.834676, -0.493163, 0.68853);
v(0.918767, -0.360789, 0.735423);
v(0.885945, -0.403254, 0.776505);
v(0.858988, -0.442414, 0.774323);
v(0.863299, -0.418598, 0.778089);
v(0.87165, -0.399775, 0.777654);
v(0.88043, -0.428013, 0.786319);
v(0.92418, -0.373981, 0.747158);
v(0.935483, -0.36968, 0.725523);
v(0.584512, -0.169578, 1.124876);
v(0.661841, 0.048971, 1.007268);
v(0.099466, 1.135558, 3.546152);
v(0.342148, 0.8997, 3.398536);
v(0.312916, 1.021541, 3.449333);
v(0.302461, 1.049641, 3.449773);
v(0.311976, 1.064098, 3.429566);
v(0.310479, 0.989794, 3.473488);
v(0.330162, 1.039212, 3.408923);
v(0.345906, 0.965211, 3.39646);
v(0.285051, 0.997699, 3.506628);
v(0.670378, 1.709565, 2.518792);
v(0.727415, 1.792177, 2.459591);
v(0.701853, 1.776227, 2.539443);
v(0.7311, 1.794161, 2.444099);
v(0.710682, 1.759914, 2.477742);
v(0.705942, 1.758919, 2.475472);
v(0.70791, 1.799787, 2.563601);
v(0.703918, 1.805101, 2.562251);
v(0.691877, 1.783572, 2.567013);
v(0.658078, 1.712786, 2.536838);
v(0.736279, 1.838506, 2.551214);
v(0.727835, 1.833174, 2.547331);
v(0.699922, 1.782457, 2.561442);
v(0.716912, 1.833394, 2.549927);
v(0.724222, 1.835545, 2.544591);
v(0.7146, 1.802883, 2.571075);
v(0.689842, 1.797891, 2.575878);
v(0.68943, 1.772686, 2.556537);
v(0.68874, 1.7434, 2.496405);
v(0.781546, 1.915831, 2.488242);
v(1.085039, -0.560457, 0.718292);
v(1.094629, -0.42535, 0.741508);
v(1.070535, -0.409035, 0.816823);
v(1.032922, -0.486737, 0.715213);
v(1.023366, -0.426563, 0.77462);
v(1.007298, -0.436727, 0.823618);
v(0.974824, -0.469165, 0.85168);
v(1.031681, -0.518994, 0.719186);
v(1.035356, -0.558967, 0.740571);
v(1.021373, -0.437606, 0.832069);
v(1.045473, -0.432577, 0.780419);
v(1.05071, -0.451982, 0.742431);
v(1.056091, -0.469647, 0.726391);
v(1.056003, -0.501451, 0.718497);
v(1.047273, -0.538624, 0.727994);
v(1.024848, -0.596816, 0.776254);
v(1.017084, -0.604011, 0.794798);
v(0.971241, -0.53374, 0.866735);
v(0.949843, -0.389199, 0.667311);
v(0.654115, -0.370602, 0.955209);
v(0.8598, -0.549757, 0.442233);
v(0.775407, -0.522054, 0.682204);
v(0.772018, 0.011124, 0.769631);
v(0.722757, -0.446774, 0.840898);
v(0.823105, -0.554673, 0.550715);
v(0.895788, -0.505792, 0.342615);
v(0.906588, -0.452599, 0.310411);
v(0.800817, -0.045395, 0.603);
v(0.826325, -0.104028, 0.501671);
v(0.902676, -0.417246, 0.290215);
v(0.648307, 0.073189, 0.990194);
v(0.668896, 0.057593, 0.973789);
v(0.583216, -0.121228, 1.140179);
v(0.590566, -0.05994, 1.141544);
v(0.640826, 0.047826, 1.036746);
v(0.568418, -0.133621, 1.145169);
v(0.587019, -0.2018, 1.109107);
v(0.596012, -0.232401, 1.090577);
v(0.706926, 0.052695, 0.844235);
v(0.737354, 0.028686, 0.751105);
v(0.757974, 0.021585, 0.790367);
v(0.721683, 0.042931, 0.799286);
v(0.704813, 0.052255, 0.877705);
v(0.673522, 0.070302, 0.925165);
v(0.72039, 0.045037, 0.774168);
v(0.898008, -0.402468, 0.261306);
v(0.897036, -0.35316, 0.300596);
v(0.865348, -0.237055, 0.34593);
v(0.900727, -0.370947, 0.298351);
v(0.885979, -0.312106, 0.305921);
v(0.687585, 0.070936, 0.868564);
v(0.941919, -0.374905, 0.674501);
v(0.943158, -0.386202, 0.658809);
v(0.899486, -0.384931, 0.766063);
v(0.846413, -0.477593, 0.745314);
v(0.846603, -0.491838, 0.701417);
v(0.877433, -0.49624, 0.669156);
v(0.919266, -0.460814, 0.637266);
v(0.904359, -0.477099, 0.644411);
v(0.934724, -0.360965, 0.694338);
v(0.924898, -0.345329, 0.709342);
v(0.892335, -0.37296, 0.764639);
v(0.91073, -0.35222, 0.740901);
v(0.841748, -0.441338, 0.771538);
v(0.831012, -0.469972, 0.744936);
v(0.936799, -0.412099, 0.63325);
v(0.90175, -0.46516, 0.62754);
v(0.77761, -0.494044, 0.73049);
v(0.804136, -0.545161, 0.605868);
v(0.94386, -0.370995, 0.702001);
v(0.940205, -0.436126, 0.640941);
v(0.847918, -0.490147, 0.725189);
v(0.855393, -0.494213, 0.684056);
v(0.849008, -0.460624, 0.762852);
v(0.949045, -0.407252, 0.652111);
v(0.887346, -0.482191, 0.647242);
v(0.748249, 1.883371, 2.567466);
v(0.732794, 1.853833, 2.598248);
v(0.723165, 1.814646, 2.591112);
v(0.769716, 1.900012, 2.522688);
v(0.748115, 1.885444, 2.560516);
v(0.756156, 1.892308, 2.525469);
v(0.717155, 1.849326, 2.626112);
v(0.706021, 1.771481, 2.534224);
v(0.703817, 1.779106, 2.59888);
v(0.673668, 1.771903, 2.584836);
v(0.695406, 1.750303, 2.57224);
v(0.681593, 1.755529, 2.532968);
v(0.695141, 1.772549, 2.535263);
v(0.672819, 1.761046, 2.574085);
v(0.700483, 1.770411, 2.564821);
v(0.703583, 1.781443, 2.575445);
v(0.564378, -0.168396, 1.137661);
v(0.561067, -0.087373, 1.161525);
v(0.620808, 0.022372, 1.088272);
v(0.659804, -0.001376, 1.091949);
v(0.678957, 0.013494, 1.052257);
v(0.762657, 0.020392, 0.834211);
v(0.829401, -0.05099, 0.645366);
v(0.85439, -0.095484, 0.573574);
v(0.748753, 0.014997, 0.693255);
v(0.655643, 0.131805, 0.8665);
v(0.841127, -0.153203, 0.428596);
v(0.892499, -0.208007, 0.427941);
v(0.879495, -0.144116, 0.51642);
v(0.911974, -0.285843, 0.372302);
v(0.862831, -0.232593, 0.331635);
v(0.880935, -0.306527, 0.288005);
v(0.892756, -0.362933, 0.276415);
v(0.92947, -0.401041, 0.34096);
v(0.902203, -0.461305, 0.27422);
v(0.89083, -0.524106, 0.30696);
v(0.866458, -0.57783, 0.365934);
v(0.830328, -0.569638, 0.498859);
v(0.920017, -0.46066, 0.361813);
v(0.901548, -0.508909, 0.435805);
v(0.883794, -0.514619, 0.526315);
v(0.888231, -0.474709, 0.625098);
v(0.854788, -0.523685, 0.57566);
v(0.91319, -0.448245, 0.605233);
v(0.920014, -0.439395, 0.622985);
v(0.940314, -0.373274, 0.637023);
v(0.92071, -0.32374, 0.72143);
v(0.899697, -0.34535, 0.760341);
v(0.842403, -0.420448, 0.78655);
v(0.823438, -0.454739, 0.7661);
v(0.824738, -0.48116, 0.72389);
v(0.787706, -0.469325, 0.77216);
v(0.770591, -0.54249, 0.666512);
v(0.74564, -0.499912, 0.758463);
v(0.701217, -0.474871, 0.828384);
v(0.660091, -0.408459, 0.918369);
v(0.611722, -0.320612, 1.021558);
v(0.579515, -0.237026, 1.095243);
v(0.622418, -0.129745, 1.133915);
v(0.627906, -0.069194, 1.137699);
v(0.619327, -0.190434, 1.112314);
v(0.809564, -0.072158, 0.519316);
v(0.782686, -0.025445, 0.595595);
v(1.109791, -0.458682, 0.698091);
v(1.104665, -0.510016, 0.698213);
v(1.045544, -0.418654, 0.942487);
v(1.080299, -0.407052, 0.909408);
v(1.034162, -0.615031, 0.775928);
v(1.105425, -0.583368, 0.730074);
v(1.000045, -0.462304, 0.868973);
v(0.990299, -0.492554, 0.877936);
v(0.978705, -0.565822, 0.88088);
v(0.994015, -0.627151, 0.866222);
v(1.028059, -0.789783, 0.964753);
v(0.97226, -0.736358, 0.991347);
v(0.942352, -0.652928, 1.032373);
v(0.954134, -0.535809, 1.090311);
v(0.964184, -0.668541, 1.490601);
v(0.916056, -0.720373, 1.465472);
v(0.91232, -0.89115, 1.381119);
v(1.019425, -0.971238, 1.341604);
v(1.038255, -0.808984, 0.98746);
v(1.00821, -0.792997, 0.995263);
v(0.99692, -0.960487, 1.314756);
v(0.988259, -0.496299, 1.14008);
v(1.049698, -0.459685, 1.127908);
v(1.046213, -0.470408, 1.152717);
v(1.069439, -0.812643, 0.985674);
v(0.083982, 1.014574, 3.633521);
v(0.149042, 1.058493, 3.580708);
v(0.24905, 1.174074, 3.398861);
v(0.191631, 1.215999, 3.399173);
v(0.318552, 1.087182, 3.407881);
v(0.346839, 1.008114, 3.375202);
v(0.356, 0.93906, 3.369481);
v(0.348739, 0.906699, 3.375266);
v(0.320098, 0.837988, 3.407752);
v(0.29545, 0.823186, 3.455111);
v(0.285561, 1.081024, 3.456715);
v(0.269302, 0.860544, 3.527016);
v(0.654235, 1.673454, 2.537165);
v(0.693701, 1.791473, 2.66847);
v(0.682517, 1.807367, 2.686037);
v(0.66123, 1.792837, 2.666176);
v(0.644651, 1.751624, 2.622905);
v(0.641923, 1.682183, 2.548084);
v(0.673227, -0.212434, 1.089042);
v(0.674078, -0.275965, 1.050419);
v(1.072974, -0.798079, 0.960613);
v(0.806249, -0.573375, 0.563141);
v(1.000772, -0.639456, 1.475272);
v(0.997615, -0.65603, 1.497213);
v(1.023476, -0.964504, 1.312748);
v(0.264744, 1.053374, 3.499142);
v(0.759476, -0.413209, 0.872405);
v(0.850322, -0.186, 0.388016);
v(0.899275, -0.427429, 0.233294);
v(0.971483, -0.974935, 1.684199);
v(1.004106, -0.474906, 1.120397);
v(1.009195, -0.482439, 1.146845);
v(0, 1.081628, 3.604266);
v(0, 1.354173, 3.214158);
v(0, 1.270211, 3.399992);
v(0, 1.338662, 2.730059);
v(0, 0.651345, 3.536764);
v(0, 0.628788, 3.359694);
v(0, 0.967043, 3.66727);
v(0, 0.760489, 3.747782);
v(0, 0.612199, 2.841632);
v(0, 0.476742, 2.436476);
v(0, 1.135803, 2.195113);
v(0, 0.637429, 1.155354);
v(0, 0.136898, 1.879198);
v(0, 0.515691, 0.775088);
v(0, -0.076061, 1.614273);
v(0, 0.353509, -0.101346);
v(0, 0.249428, -0.560371);
v(0, 0.063679, -0.822175);
f2(937, 58, 59);
f2(62, 58, 937);
f2(58, 62, 61);
f2(935, 62, 937);
f2(36, 62, 935);
f2(116, 50, 51);
f2(115, 55, 56);
f2(115, 56, 57);
f2(42, 118, 54);
f2(55, 118, 42);
f2(55, 114, 118);
f2(115, 114, 55);
f2(54, 118, 53);
f2(116, 57, 50);
f2(26, 938, 17);
f2(47, 437, 438);
f2(21, 437, 47);
f2(23, 18, 49);
f2(20, 21, 47);
f2(43, 439, 48);
f2(18, 19, 49);
f2(19, 931, 49);
f2(48, 49, 928);
f2(439, 49, 48);
f2(49, 931, 928);
f2(40, 50, 20);
f2(50, 22, 20);
f2(50, 0, 22);
f2(40, 44, 34);
f2(37, 40, 34);
f2(927, 41, 934);
f2(44, 45, 46);
f2(44, 46, 34);
f2(46, 38, 35);
f2(45, 38, 46);
f2(38, 932, 933);
f2(38, 933, 35);
f2(40, 47, 44);
f2(44, 47, 43);
f2(44, 43, 45);
f2(45, 43, 48);
f2(45, 48, 38);
f2(927, 55, 42);
f2(927, 42, 41);
f2(41, 54, 33);
f2(42, 54, 41);
f2(53, 52, 32);
f2(33, 53, 32);
f2(54, 53, 33);
f2(32, 40, 37);
f2(32, 52, 40);
f2(52, 51, 40);
f2(51, 50, 40);
f2(927, 39, 55);
f2(39, 56, 55);
f2(925, 39, 927);
f2(39, 925, 119);
f2(39, 119, 56);
f2(40, 20, 47);
f2(56, 4, 57);
f2(29, 37, 87);
f2(41, 60, 36);
f2(28, 29, 88);
f2(60, 28, 88);
f2(88, 29, 87);
f2(86, 30, 85);
f2(87, 30, 86);
f2(96, 27, 26);
f2(35, 933, 27);
f2(46, 35, 31);
f2(30, 34, 31);
f2(34, 46, 31);
f2(29, 32, 37);
f2(33, 32, 29);
f2(41, 33, 28);
f2(37, 34, 30);
f2(30, 31, 85);
f2(31, 35, 27);
f2(31, 27, 96);
f2(85, 31, 96);
f2(87, 37, 30);
f2(33, 29, 28);
f2(60, 41, 28);
f2(934, 41, 36);
f2(27, 938, 26);
f2(26, 17, 95);
f2(939, 24, 7);
f2(939, 8, 940);
f2(939, 7, 8);
f2(940, 8, 10);
f2(940, 10, 11);
f2(25, 12, 941);
f2(940, 11, 25);
f2(59, 16, 24);
f2(16, 59, 14);
f2(56, 119, 4);
f2(3, 2, 57);
f2(4, 3, 57);
f2(4, 5, 3);
f2(119, 5, 4);
f2(57, 2, 1);
f2(57, 0, 50);
f2(1, 0, 57);
f2(118, 117, 53);
f2(53, 117, 52);
f2(117, 51, 52);
f2(97, 26, 95);
f2(15, 89, 90);
f2(58, 61, 89);
f2(59, 89, 14);
f2(62, 101, 61);
f2(62, 60, 101);
f2(89, 61, 64);
f2(36, 60, 62);
f2(60, 88, 101);
f2(14, 89, 15);
f2(97, 95, 100);
f2(395, 94, 93);
f2(395, 93, 92);
f2(99, 395, 92);
f2(88, 87, 63);
f2(63, 87, 66);
f2(63, 66, 360);
f2(86, 85, 96);
f2(86, 96, 66);
f2(87, 86, 66);
f2(97, 96, 26);
f2(101, 88, 63);
f2(91, 65, 403);
f2(89, 64, 90);
f2(453, 419, 72);
f2(419, 84, 72);
f2(419, 420, 84);
f2(84, 420, 79);
f2(79, 421, 71);
f2(71, 422, 98);
f2(418, 412, 413);
f2(418, 413, 417);
f2(413, 414, 417);
f2(417, 414, 416);
f2(414, 409, 416);
f2(416, 409, 415);
f2(409, 81, 415);
f2(415, 81, 450);
f2(411, 412, 418);
f2(459, 75, 70);
f2(74, 79, 75);
f2(73, 84, 74);
f2(72, 84, 73);
f2(70, 71, 77);
f2(77, 71, 76);
f2(71, 98, 76);
f2(70, 79, 71);
f2(74, 84, 79);
f2(83, 407, 427);
f2(364, 68, 69);
f2(69, 68, 107);
f2(364, 363, 68);
f2(370, 69, 67);
f2(369, 370, 67);
f2(375, 103, 380);
f2(104, 449, 456);
f2(67, 387, 103);
f2(67, 105, 387);
f2(69, 107, 105);
f2(69, 105, 67);
f2(375, 67, 103);
f2(398, 97, 100);
f2(363, 106, 68);
f2(108, 448, 104);
f2(448, 449, 104);
f2(362, 361, 106);
f2(106, 361, 108);
f2(108, 400, 448);
f2(941, 12, 13);
f2(941, 13, 9);
f2(940, 25, 941);
f2(27, 933, 936);
f2(48, 928, 929);
f2(38, 48, 929);
f2(38, 929, 932);
f2(396, 397, 100);
f2(396, 100, 395);
f2(397, 398, 100);
f2(378, 379, 99);
f2(379, 451, 99);
f2(394, 395, 99);
f2(451, 394, 99);
f2(395, 100, 94);
f2(66, 97, 359);
f2(66, 96, 97);
f2(365, 364, 69);
f2(365, 69, 370);
f2(369, 67, 371);
f2(371, 67, 375);
f2(65, 101, 367);
f2(64, 101, 65);
f2(64, 61, 101);
f2(59, 58, 89);
f2(401, 400, 108);
f2(361, 401, 108);
f2(400, 402, 448);
f2(358, 97, 399);
f2(399, 97, 398);
f2(359, 97, 358);
f2(90, 64, 65);
f2(65, 404, 403);
f2(65, 367, 366);
f2(65, 366, 404);
f2(102, 372, 373);
f2(102, 373, 374);
f2(91, 403, 102);
f2(103, 386, 385);
f2(105, 107, 388);
f2(107, 389, 388);
f2(391, 393, 392);
f2(382, 383, 384);
f2(390, 104, 391);
f2(104, 456, 391);
f2(391, 456, 393);
f2(385, 383, 382);
f2(381, 385, 382);
f2(103, 385, 381);
f2(68, 106, 107);
f2(107, 106, 108);
f2(389, 108, 104);
f2(107, 108, 389);
f2(935, 934, 36);
f2(937, 59, 939);
f2(939, 59, 24);
f2(27, 936, 938);
f2(110, 442, 117);
f2(109, 445, 115);
f2(109, 57, 116);
f2(57, 109, 115);
f2(112, 116, 51);
f2(118, 110, 117);
f2(111, 110, 118);
f2(114, 111, 118);
f2(115, 445, 114);
f2(442, 51, 117);
f2(442, 112, 51);
f2(112, 113, 116);
f2(113, 109, 116);
f2(445, 446, 114);
f2(446, 111, 114);
f2(443, 113, 112);
f2(113, 445, 109);
f2(443, 444, 113);
f2(113, 444, 445);
f2(447, 442, 110);
f2(447, 110, 111);
f2(120, 91, 102);
f2(120, 102, 121);
f2(125, 122, 123);
f2(129, 374, 458);
f2(458, 376, 126);
f2(138, 133, 135);
f2(138, 136, 133);
f2(134, 136, 125);
f2(126, 142, 125);
f2(142, 130, 122);
f2(125, 142, 122);
f2(125, 123, 124);
f2(129, 458, 126);
f2(142, 128, 130);
f2(142, 127, 128);
f2(99, 92, 127);
f2(142, 99, 127);
f2(376, 377, 126);
f2(102, 374, 129);
f2(136, 126, 125);
f2(132, 126, 136);
f2(129, 126, 132);
f2(140, 129, 132);
f2(140, 131, 139);
f2(140, 132, 131);
f2(137, 125, 141);
f2(141, 125, 124);
f2(121, 129, 140);
f2(121, 102, 129);
f2(138, 132, 136);
f2(137, 134, 125);
f2(378, 143, 377);
f2(99, 143, 378);
f2(142, 143, 99);
f2(126, 377, 143);
f2(142, 126, 143);
f2(175, 163, 172);
f2(172, 163, 171);
f2(163, 170, 171);
f2(163, 169, 170);
f2(163, 168, 169);
f2(163, 167, 168);
f2(163, 166, 167);
f2(166, 163, 165);
f2(165, 163, 164);
f2(164, 163, 175);
f2(162, 174, 156);
f2(161, 162, 156);
f2(160, 161, 156);
f2(159, 160, 156);
f2(158, 159, 156);
f2(157, 158, 156);
f2(155, 157, 156);
f2(154, 155, 156);
f2(153, 154, 156);
f2(174, 153, 156);
f2(152, 173, 144);
f2(151, 152, 144);
f2(150, 151, 144);
f2(149, 150, 144);
f2(148, 149, 144);
f2(147, 148, 144);
f2(146, 147, 144);
f2(145, 146, 144);
f2(173, 145, 144);
f2(221, 399, 398);
f2(413, 222, 223);
f2(203, 381, 224);
f2(226, 225, 213);
f2(232, 230, 229);
f2(228, 231, 230);
f2(234, 227, 233);
f2(400, 235, 402);
f2(236, 202, 201);
f2(237, 924, 430);
f2(431, 237, 430);
f2(430, 924, 930);
f2(237, 926, 924);
f2(178, 926, 237);
f2(176, 178, 237);
f2(433, 176, 237);
f2(432, 433, 180);
f2(433, 237, 180);
f2(180, 237, 431);
f2(437, 238, 438);
f2(434, 440, 241);
f2(437, 436, 238);
f2(436, 244, 238);
f2(435, 243, 244);
f2(179, 243, 435);
f2(240, 455, 245);
f2(240, 245, 242);
f2(435, 244, 436);
f2(179, 241, 243);
f2(239, 240, 242);
f2(440, 455, 240);
f2(434, 241, 179);
f2(246, 218, 442);
f2(247, 249, 248);
f2(249, 250, 251);
f2(253, 252, 254);
f2(220, 0xFF, 447);
f2(447, 246, 442);
f2(254, 258, 263);
f2(260, 265, 0x0101);
f2(249, 251, 264);
f2(260, 0x0101, 253);
f2(253, 0x0101, 252);
f2(0x0101, 0x0100, 261);
f2(264, 246, 447);
f2(246, 250, 218);
f2(251, 250, 246);
f2(265, 260, 259);
f2(259, 260, 262);
f2(260, 253, 262);
f2(282, 281, 409);
f2(413, 283, 222);
f2(273, 280, 274);
f2(269, 278, 279);
f2(269, 279, 273);
f2(412, 272, 283);
f2(411, 272, 412);
f2(411, 271, 272);
f2(275, 271, 411);
f2(275, 270, 271);
f2(223, 282, 414);
f2(413, 223, 414);
f2(273, 279, 280);
f2(269, 277, 278);
f2(270, 233, 271);
f2(337, 338, 282);
f2(272, 232, 283);
f2(222, 337, 223);
f2(223, 337, 282);
f2(338, 281, 282);
f2(341, 273, 274);
f2(276, 270, 275);
f2(266, 410, 409);
f2(266, 185, 410);
f2(406, 185, 266);
f2(267, 184, 405);
f2(267, 182, 184);
f2(268, 182, 267);
f2(268, 183, 182);
f2(408, 183, 268);
f2(408, 268, 407);
f2(412, 283, 413);
f2(407, 268, 275);
f2(268, 267, 276);
f2(279, 405, 406);
f2(277, 267, 405);
f2(281, 266, 409);
f2(280, 266, 274);
f2(280, 406, 266);
f2(278, 405, 279);
f2(276, 267, 277);
f2(407, 275, 411);
f2(268, 276, 275);
f2(274, 266, 281);
f2(279, 406, 280);
f2(277, 405, 278);
f2(282, 409, 414);
f2(335, 270, 277);
f2(270, 276, 277);
f2(335, 234, 270);
f2(234, 233, 270);
f2(284, 335, 277);
f2(340, 284, 277);
f2(340, 277, 269);
f2(336, 340, 269);
f2(449, 448, 303);
f2(382, 384, 290);
f2(286, 382, 290);
f2(381, 382, 286);
f2(224, 381, 286);
f2(224, 286, 379);
f2(291, 203, 224);
f2(380, 203, 291);
f2(292, 380, 291);
f2(314, 204, 375);
f2(292, 375, 380);
f2(294, 370, 368);
f2(368, 370, 369);
f2(294, 365, 370);
f2(294, 293, 365);
f2(293, 364, 365);
f2(285, 397, 289);
f2(289, 397, 396);
f2(285, 398, 397);
f2(221, 398, 285);
f2(404, 293, 403);
f2(404, 366, 293);
f2(289, 396, 395);
f2(286, 290, 379);
f2(290, 451, 379);
f2(291, 224, 378);
f2(224, 379, 378);
f2(377, 291, 378);
f2(376, 292, 291);
f2(376, 291, 377);
f2(314, 375, 295);
f2(295, 375, 292);
f2(295, 292, 376);
f2(315, 371, 204);
f2(333, 395, 287);
f2(333, 289, 395);
f2(287, 395, 394);
f2(366, 288, 364);
f2(366, 364, 293);
f2(403, 293, 294);
f2(334, 287, 394);
f2(334, 394, 451);
f2(290, 334, 451);
f2(313, 369, 371);
f2(313, 457, 369);
f2(457, 368, 369);
f2(202, 236, 300);
f2(364, 288, 363);
f2(289, 333, 456);
f2(285, 289, 456);
f2(285, 456, 449);
f2(449, 221, 285);
f2(221, 449, 303);
f2(297, 296, 236);
f2(296, 300, 236);
f2(309, 296, 297);
f2(296, 205, 300);
f2(210, 296, 309);
f2(210, 205, 296);
f2(201, 309, 297);
f2(201, 297, 236);
f2(300, 360, 362);
f2(362, 360, 361);
f2(361, 360, 207);
f2(361, 207, 208);
f2(207, 206, 299);
f2(299, 206, 298);
f2(208, 207, 299);
f2(208, 299, 401);
f2(401, 299, 298);
f2(401, 298, 400);
f2(400, 298, 235);
f2(300, 362, 202);
f2(205, 360, 300);
f2(303, 448, 402);
f2(235, 358, 302);
f2(235, 301, 358);
f2(303, 399, 221);
f2(302, 358, 399);
f2(302, 399, 303);
f2(301, 359, 358);
f2(303, 402, 302);
f2(359, 301, 298);
f2(298, 206, 359);
f2(304, 308, 363);
f2(306, 304, 363);
f2(307, 306, 305);
f2(307, 304, 306);
f2(304, 309, 308);
f2(310, 307, 305);
f2(310, 316, 307);
f2(316, 309, 304);
f2(316, 210, 309);
f2(310, 305, 366);
f2(316, 304, 307);
f2(288, 366, 305);
f2(306, 288, 305);
f2(306, 363, 288);
f2(308, 201, 363);
f2(402, 235, 302);
f2(235, 298, 301);
f2(309, 201, 308);
f2(366, 367, 310);
f2(367, 209, 310);
f2(310, 209, 316);
f2(209, 210, 316);
f2(372, 313, 315);
f2(373, 372, 315);
f2(373, 312, 374);
f2(373, 315, 312);
f2(374, 312, 314);
f2(374, 311, 458);
f2(372, 457, 313);
f2(458, 295, 376);
f2(458, 311, 295);
f2(311, 374, 314);
f2(314, 295, 311);
f2(204, 314, 312);
f2(312, 315, 204);
f2(371, 315, 313);
f2(227, 234, 335);
f2(211, 388, 326);
f2(326, 388, 328);
f2(388, 389, 328);
f2(328, 389, 327);
f2(327, 389, 216);
f2(327, 216, 231);
f2(231, 216, 215);
f2(231, 215, 390);
f2(231, 390, 230);
f2(230, 390, 329);
f2(390, 391, 329);
f2(330, 391, 392);
f2(329, 391, 330);
f2(338, 321, 226);
f2(321, 392, 226);
f2(330, 392, 321);
f2(226, 333, 225);
f2(392, 333, 226);
f2(392, 393, 333);
f2(383, 341, 214);
f2(213, 338, 226);
f2(385, 386, 332);
f2(385, 332, 383);
f2(383, 332, 341);
f2(384, 213, 334);
f2(334, 213, 225);
f2(332, 324, 341);
f2(332, 323, 324);
f2(332, 386, 323);
f2(212, 331, 386);
f2(386, 336, 323);
f2(331, 336, 386);
f2(331, 340, 336);
f2(330, 321, 337);
f2(339, 329, 330);
f2(339, 330, 320);
f2(320, 330, 337);
f2(230, 329, 229);
f2(229, 329, 339);
f2(319, 327, 231);
f2(319, 231, 228);
f2(228, 230, 232);
f2(326, 328, 227);
f2(328, 327, 227);
f2(227, 327, 319);
f2(233, 227, 319);
f2(211, 325, 317);
f2(211, 326, 325);
f2(326, 227, 325);
f2(325, 335, 317);
f2(325, 227, 335);
f2(212, 387, 331);
f2(387, 318, 331);
f2(387, 211, 318);
f2(211, 317, 318);
f2(318, 340, 331);
f2(333, 393, 456);
f2(334, 225, 333);
f2(287, 334, 333);
f2(290, 384, 334);
f2(284, 317, 335);
f2(318, 317, 284);
f2(340, 318, 284);
f2(323, 336, 269);
f2(273, 324, 323);
f2(269, 273, 323);
f2(273, 341, 324);
f2(322, 341, 274);
f2(213, 214, 338);
f2(214, 341, 322);
f2(338, 214, 322);
f2(281, 338, 322);
f2(274, 281, 322);
f2(338, 337, 321);
f2(320, 337, 222);
f2(222, 339, 320);
f2(339, 222, 283);
f2(283, 232, 229);
f2(339, 283, 229);
f2(272, 228, 232);
f2(271, 228, 272);
f2(319, 228, 271);
f2(271, 233, 319);
f2(444, 348, 445);
f2(348, 346, 445);
f2(343, 342, 444);
f2(352, 356, 219);
f2(356, 350, 219);
f2(262, 351, 446);
f2(347, 446, 445);
f2(344, 443, 219);
f2(344, 345, 443);
f2(345, 343, 443);
f2(346, 347, 445);
f2(343, 444, 443);
f2(342, 348, 444);
f2(350, 344, 219);
f2(355, 353, 446);
f2(351, 355, 446);
f2(265, 259, 446);
f2(347, 265, 446);
f2(342, 265, 346);
f2(342, 346, 348);
f2(346, 265, 347);
f2(265, 0x0100, 0x0101);
f2(345, 265, 342);
f2(345, 342, 343);
f2(446, 259, 262);
f2(254, 252, 258);
f2(0x0100, 344, 350);
f2(0x0100, 265, 344);
f2(265, 345, 344);
f2(258, 252, 357);
f2(0x0101, 261, 252);
f2(252, 261, 357);
f2(0xFF, 264, 447);
f2(264, 251, 246);
f2(249, 264, 0xFF);
f2(249, 0xFF, 220);
f2(353, 249, 220);
f2(258, 248, 263);
f2(263, 248, 354);
f2(248, 249, 354);
f2(249, 247, 217);
f2(247, 349, 352);
f2(248, 258, 356);
f2(349, 248, 356);
f2(349, 356, 352);
f2(247, 248, 349);
f2(250, 217, 218);
f2(250, 249, 217);
f2(446, 353, 220);
f2(352, 219, 217);
f2(351, 254, 355);
f2(254, 263, 355);
f2(357, 350, 356);
f2(258, 357, 356);
f2(262, 253, 351);
f2(253, 254, 351);
f2(357, 261, 350);
f2(261, 0x0100, 350);
f2(263, 354, 355);
f2(354, 249, 353);
f2(355, 354, 353);
f2(247, 352, 217);
f2(359, 206, 66);
f2(66, 206, 207);
f2(207, 360, 66);
f2(360, 205, 63);
f2(63, 205, 210);
f2(210, 209, 63);
f2(209, 367, 101);
f2(63, 209, 101);
f2(208, 401, 361);
f2(202, 106, 201);
f2(106, 202, 362);
f2(106, 363, 201);
f2(103, 381, 203);
f2(103, 203, 380);
f2(371, 375, 204);
f2(384, 214, 213);
f2(383, 214, 384);
f2(212, 386, 103);
f2(387, 212, 103);
f2(105, 388, 211);
f2(387, 105, 211);
f2(104, 390, 215);
f2(104, 215, 216);
f2(104, 216, 389);
f2(403, 294, 368);
f2(403, 368, 102);
f2(408, 407, 83);
f2(409, 410, 78);
f2(409, 78, 81);
f2(80, 454, 425);
f2(423, 429, 80);
f2(80, 425, 423);
f2(425, 424, 423);
f2(424, 425, 192);
f2(192, 190, 424);
f2(190, 192, 193);
f2(193, 189, 190);
f2(189, 193, 194);
f2(194, 188, 189);
f2(188, 194, 199);
f2(199, 187, 188);
f2(187, 199, 198);
f2(198, 186, 187);
f2(186, 198, 195);
f2(195, 426, 186);
f2(195, 191, 426);
f2(79, 420, 200);
f2(421, 79, 200);
f2(71, 421, 196);
f2(196, 422, 71);
f2(49, 439, 177);
f2(43, 47, 438);
f2(438, 439, 43);
f2(181, 49, 177);
f2(181, 441, 23);
f2(181, 23, 49);
f2(442, 218, 112);
f2(112, 218, 217);
f2(217, 219, 112);
f2(219, 443, 112);
f2(111, 446, 220);
f2(220, 447, 111);
f2(65, 6, 90);
f2(6, 65, 91);
f2(372, 102, 457);
f2(368, 457, 102);
f2(407, 411, 460);
f2(460, 411, 418);
f2(197, 461, 426);
f2(426, 191, 197);
f2(197, 452, 82);
f2(461, 197, 82);
f2(427, 407, 460);
f2(82, 428, 461);
f2(70, 459, 79);
f2(75, 79, 459);
f2(520, 937, 521);
f2(520, 524, 937);
f2(524, 520, 523);
f2(524, 935, 937);
f2(524, 498, 935);
f2(0x0200, 578, 513);
f2(517, 577, 518);
f2(518, 577, 519);
f2(580, 504, 516);
f2(580, 517, 504);
f2(576, 517, 580);
f2(576, 577, 517);
f2(580, 516, 515);
f2(519, 578, 0x0200);
f2(938, 488, 479);
f2(899, 509, 900);
f2(899, 483, 509);
f2(480, 485, 511);
f2(483, 482, 509);
f2(901, 505, 510);
f2(481, 480, 511);
f2(931, 481, 511);
f2(511, 510, 928);
f2(511, 901, 510);
f2(931, 511, 928);
f2(0x0200, 502, 482);
f2(484, 0x0200, 482);
f2(462, 0x0200, 484);
f2(506, 502, 496);
f2(502, 499, 496);
f2(503, 927, 934);
f2(507, 506, 508);
f2(508, 506, 496);
f2(500, 508, 497);
f2(500, 507, 508);
f2(932, 500, 933);
f2(933, 500, 497);
f2(509, 502, 506);
f2(509, 506, 505);
f2(505, 506, 507);
f2(505, 507, 510);
f2(510, 507, 500);
f2(517, 927, 504);
f2(504, 927, 503);
f2(516, 503, 495);
f2(516, 504, 503);
f2(0x0202, 515, 494);
f2(515, 495, 494);
f2(515, 516, 495);
f2(502, 494, 499);
f2(0x0202, 494, 502);
f2(513, 0x0202, 502);
f2(0x0200, 513, 502);
f2(501, 927, 517);
f2(518, 501, 517);
f2(501, 925, 927);
f2(925, 501, 581);
f2(581, 501, 518);
f2(482, 502, 509);
f2(466, 518, 519);
f2(499, 491, 549);
f2(522, 503, 498);
f2(491, 490, 550);
f2(490, 522, 550);
f2(491, 550, 549);
f2(492, 548, 547);
f2(492, 549, 548);
f2(489, 558, 488);
f2(933, 497, 489);
f2(497, 508, 493);
f2(496, 492, 493);
f2(508, 496, 493);
f2(494, 491, 499);
f2(494, 495, 491);
f2(495, 503, 490);
f2(496, 499, 492);
f2(493, 492, 547);
f2(497, 493, 489);
f2(489, 493, 558);
f2(493, 547, 558);
f2(499, 549, 492);
f2(491, 495, 490);
f2(503, 522, 490);
f2(503, 934, 498);
f2(938, 489, 488);
f2(479, 488, 557);
f2(486, 939, 469);
f2(470, 939, 940);
f2(469, 939, 470);
f2(470, 940, 472);
f2(472, 940, 473);
f2(474, 487, 941);
f2(473, 940, 487);
f2(478, 521, 486);
f2(521, 478, 476);
f2(581, 518, 466);
f2(464, 465, 519);
f2(465, 466, 519);
f2(467, 466, 465);
f2(467, 581, 466);
f2(464, 519, 463);
f2(519, 0x0200, 462);
f2(463, 519, 462);
f2(579, 580, 515);
f2(579, 515, 0x0202);
f2(513, 579, 0x0202);
f2(488, 559, 557);
f2(551, 477, 552);
f2(523, 520, 551);
f2(551, 521, 476);
f2(563, 524, 523);
f2(522, 524, 563);
f2(523, 551, 526);
f2(522, 498, 524);
f2(550, 522, 563);
f2(551, 476, 477);
f2(557, 559, 562);
f2(556, 857, 555);
f2(555, 857, 554);
f2(857, 561, 554);
f2(549, 550, 525);
f2(549, 525, 528);
f2(528, 525, 822);
f2(547, 548, 558);
f2(558, 548, 528);
f2(548, 549, 528);
f2(558, 559, 488);
f2(550, 563, 525);
f2(527, 553, 865);
f2(526, 551, 552);
f2(881, 915, 534);
f2(546, 881, 534);
f2(882, 881, 546);
f2(882, 546, 541);
f2(883, 541, 533);
f2(884, 533, 560);
f2(874, 880, 875);
f2(875, 880, 879);
f2(876, 875, 879);
f2(876, 879, 878);
f2(871, 876, 878);
f2(871, 878, 877);
f2(543, 871, 877);
f2(543, 877, 912);
f2(874, 873, 880);
f2(537, 921, 532);
f2(541, 536, 537);
f2(546, 535, 536);
f2(546, 534, 535);
f2(533, 532, 539);
f2(533, 539, 538);
f2(560, 533, 538);
f2(541, 532, 533);
f2(546, 536, 541);
f2(869, 545, 889);
f2(530, 826, 531);
f2(530, 531, 569);
f2(825, 826, 530);
f2(531, 832, 529);
f2(832, 831, 529);
f2(565, 837, 842);
f2(911, 566, 918);
f2(849, 529, 565);
f2(567, 529, 849);
f2(569, 531, 567);
f2(567, 531, 529);
f2(529, 837, 565);
f2(559, 860, 562);
f2(568, 825, 530);
f2(910, 570, 566);
f2(911, 910, 566);
f2(823, 824, 568);
f2(823, 568, 570);
f2(862, 570, 910);
f2(474, 941, 475);
f2(475, 941, 471);
f2(487, 940, 941);
f2(933, 489, 936);
f2(928, 510, 929);
f2(510, 500, 929);
f2(929, 500, 932);
f2(859, 858, 562);
f2(562, 858, 857);
f2(860, 859, 562);
f2(841, 840, 561);
f2(913, 841, 561);
f2(857, 856, 561);
f2(856, 913, 561);
f2(562, 857, 556);
f2(559, 528, 821);
f2(558, 528, 559);
f2(826, 827, 531);
f2(531, 827, 832);
f2(529, 831, 833);
f2(529, 833, 837);
f2(563, 527, 829);
f2(563, 526, 527);
f2(523, 526, 563);
f2(520, 521, 551);
f2(862, 863, 570);
f2(863, 823, 570);
f2(864, 862, 910);
f2(559, 820, 861);
f2(559, 861, 860);
f2(559, 821, 820);
f2(526, 552, 527);
f2(866, 527, 865);
f2(829, 527, 828);
f2(828, 527, 866);
f2(834, 564, 835);
f2(835, 564, 836);
f2(865, 553, 564);
f2(848, 565, 847);
f2(569, 567, 850);
f2(851, 569, 850);
f2(855, 853, 854);
f2(845, 844, 846);
f2(566, 852, 853);
f2(918, 566, 853);
f2(918, 853, 855);
f2(845, 847, 844);
f2(847, 843, 844);
f2(847, 565, 843);
f2(568, 530, 569);
f2(568, 569, 570);
f2(570, 851, 566);
f2(570, 569, 851);
f2(934, 935, 498);
f2(521, 937, 939);
f2(521, 939, 486);
f2(936, 489, 938);
f2(904, 572, 579);
f2(907, 571, 577);
f2(519, 571, 578);
f2(571, 519, 577);
f2(578, 574, 513);
f2(572, 580, 579);
f2(572, 573, 580);
f2(573, 576, 580);
f2(907, 577, 576);
f2(513, 904, 579);
f2(574, 904, 513);
f2(575, 574, 578);
f2(571, 575, 578);
f2(908, 907, 576);
f2(573, 908, 576);
f2(575, 905, 574);
f2(907, 575, 571);
f2(906, 905, 575);
f2(906, 575, 907);
f2(904, 909, 572);
f2(572, 909, 573);
f2(553, 582, 564);
f2(564, 582, 583);
f2(584, 587, 585);
f2(836, 591, 920);
f2(838, 920, 588);
f2(595, 600, 597);
f2(598, 600, 595);
f2(598, 596, 587);
f2(604, 588, 587);
f2(592, 604, 584);
f2(604, 587, 584);
f2(585, 587, 586);
f2(920, 591, 588);
f2(590, 604, 592);
f2(589, 604, 590);
f2(554, 561, 589);
f2(561, 604, 589);
f2(839, 838, 588);
f2(836, 564, 591);
f2(588, 598, 587);
f2(588, 594, 598);
f2(588, 591, 594);
f2(591, 602, 594);
f2(593, 602, 601);
f2(594, 602, 593);
f2(587, 599, 603);
f2(587, 603, 586);
f2(591, 583, 602);
f2(564, 583, 591);
f2(594, 600, 598);
f2(596, 599, 587);
f2(605, 840, 839);
f2(605, 561, 840);
f2(605, 604, 561);
f2(839, 588, 605);
f2(588, 604, 605);
f2(625, 637, 634);
f2(625, 634, 633);
f2(632, 625, 633);
f2(631, 625, 632);
f2(630, 625, 631);
f2(629, 625, 630);
f2(628, 625, 629);
f2(625, 628, 627);
f2(625, 627, 626);
f2(625, 626, 637);
f2(636, 624, 618);
f2(624, 623, 618);
f2(623, 622, 618);
f2(622, 621, 618);
f2(621, 620, 618);
f2(620, 619, 618);
f2(619, 617, 618);
f2(617, 616, 618);
f2(616, 615, 618);
f2(615, 636, 618);
f2(635, 614, 606);
f2(614, 613, 606);
f2(613, 612, 606);
f2(612, 611, 606);
f2(611, 610, 606);
f2(610, 609, 606);
f2(609, 608, 606);
f2(608, 607, 606);
f2(607, 635, 606);
f2(861, 683, 860);
f2(684, 875, 685);
f2(843, 665, 686);
f2(687, 688, 675);
f2(692, 694, 691);
f2(693, 690, 692);
f2(689, 696, 695);
f2(697, 862, 864);
f2(664, 698, 663);
f2(924, 699, 892);
f2(699, 893, 892);
f2(924, 892, 930);
f2(926, 699, 924);
f2(926, 640, 699);
f2(640, 638, 699);
f2(638, 895, 699);
f2(895, 894, 642);
f2(699, 895, 642);
f2(699, 642, 893);
f2(700, 899, 900);
f2(902, 896, 703);
f2(898, 899, 700);
f2(706, 898, 700);
f2(705, 897, 706);
f2(705, 641, 897);
f2(917, 702, 707);
f2(707, 702, 704);
f2(706, 897, 898);
f2(703, 641, 705);
f2(702, 701, 704);
f2(917, 902, 702);
f2(703, 896, 641);
f2(680, 708, 904);
f2(711, 709, 710);
f2(712, 711, 713);
f2(714, 715, 716);
f2(717, 682, 909);
f2(708, 909, 904);
f2(720, 716, 725);
f2(727, 722, 719);
f2(713, 711, 726);
f2(719, 722, 715);
f2(719, 715, 714);
f2(718, 719, 723);
f2(708, 726, 909);
f2(712, 708, 680);
f2(712, 713, 708);
f2(722, 727, 721);
f2(722, 721, 724);
f2(715, 722, 724);
f2(743, 744, 871);
f2(745, 875, 684);
f2(742, 735, 736);
f2(740, 731, 741);
f2(741, 731, 735);
f2(734, 874, 745);
f2(734, 873, 874);
f2(733, 873, 734);
f2(733, 737, 873);
f2(732, 737, 733);
f2(744, 685, 876);
f2(685, 875, 876);
f2(741, 735, 742);
f2(739, 731, 740);
f2(695, 732, 733);
f2(800, 799, 744);
f2(694, 734, 745);
f2(799, 684, 685);
f2(799, 685, 744);
f2(743, 800, 744);
f2(735, 803, 736);
f2(732, 738, 737);
f2(872, 728, 871);
f2(647, 728, 872);
f2(647, 868, 728);
f2(646, 729, 867);
f2(644, 729, 646);
f2(644, 730, 729);
f2(645, 730, 644);
f2(645, 870, 730);
f2(730, 870, 869);
f2(745, 874, 875);
f2(730, 869, 737);
f2(729, 730, 738);
f2(867, 741, 868);
f2(729, 739, 867);
f2(728, 743, 871);
f2(728, 742, 736);
f2(868, 742, 728);
f2(867, 740, 741);
f2(729, 738, 739);
f2(737, 869, 873);
f2(738, 730, 737);
f2(728, 736, 743);
f2(868, 741, 742);
f2(867, 739, 740);
f2(871, 744, 876);
f2(732, 797, 739);
f2(738, 732, 739);
f2(696, 797, 732);
f2(695, 696, 732);
f2(797, 746, 739);
f2(746, 802, 739);
f2(739, 802, 731);
f2(802, 798, 731);
f2(910, 911, 765);
f2(846, 844, 752);
f2(844, 748, 752);
f2(844, 843, 748);
f2(843, 686, 748);
f2(748, 686, 841);
f2(665, 753, 686);
f2(665, 842, 753);
f2(842, 754, 753);
f2(666, 776, 837);
f2(837, 754, 842);
f2(832, 756, 830);
f2(832, 830, 831);
f2(827, 756, 832);
f2(755, 756, 827);
f2(826, 755, 827);
f2(859, 747, 751);
f2(859, 751, 858);
f2(860, 747, 859);
f2(860, 683, 747);
f2(755, 866, 865);
f2(828, 866, 755);
f2(858, 751, 857);
f2(752, 748, 841);
f2(913, 752, 841);
f2(686, 753, 840);
f2(841, 686, 840);
f2(753, 839, 840);
f2(754, 838, 753);
f2(753, 838, 839);
f2(837, 776, 757);
f2(837, 757, 754);
f2(754, 757, 838);
f2(833, 777, 666);
f2(857, 795, 749);
f2(751, 795, 857);
f2(857, 749, 856);
f2(750, 828, 826);
f2(826, 828, 755);
f2(755, 865, 756);
f2(749, 796, 856);
f2(856, 796, 913);
f2(796, 752, 913);
f2(831, 775, 833);
f2(919, 775, 831);
f2(830, 919, 831);
f2(698, 664, 762);
f2(750, 826, 825);
f2(795, 751, 918);
f2(751, 747, 918);
f2(918, 747, 911);
f2(683, 911, 747);
f2(911, 683, 765);
f2(758, 759, 698);
f2(762, 758, 698);
f2(758, 0x0303, 759);
f2(667, 758, 762);
f2(758, 672, 0x0303);
f2(667, 672, 758);
f2(0x0303, 663, 759);
f2(759, 663, 698);
f2(822, 762, 824);
f2(822, 824, 823);
f2(822, 823, 669);
f2(669, 823, 670);
f2(668, 669, 761);
f2(668, 761, 760);
f2(669, 670, 761);
f2(761, 670, 863);
f2(761, 863, 760);
f2(760, 863, 862);
f2(760, 862, 697);
f2(824, 762, 664);
f2(822, 667, 762);
f2(910, 765, 864);
f2(820, 697, 764);
f2(763, 697, 820);
f2(861, 765, 683);
f2(820, 764, 861);
f2(861, 764, 765);
f2(821, 763, 820);
f2(864, 765, 764);
f2(763, 821, 760);
f2(668, 760, 821);
f2(770, 766, 825);
f2(766, 0x0300, 825);
f2(0x0300, 769, 767);
f2(766, 769, 0x0300);
f2(0x0303, 766, 770);
f2(769, 772, 767);
f2(778, 772, 769);
f2(0x0303, 778, 766);
f2(672, 778, 0x0303);
f2(767, 772, 828);
f2(766, 778, 769);
f2(828, 750, 767);
f2(750, 0x0300, 767);
f2(825, 0x0300, 750);
f2(663, 770, 825);
f2(697, 864, 764);
f2(760, 697, 763);
f2(663, 0x0303, 770);
f2(829, 828, 772);
f2(671, 829, 772);
f2(671, 772, 778);
f2(672, 671, 778);
f2(775, 834, 777);
f2(834, 835, 777);
f2(774, 835, 836);
f2(777, 835, 774);
f2(774, 836, 776);
f2(773, 836, 920);
f2(919, 834, 775);
f2(757, 920, 838);
f2(773, 920, 757);
f2(836, 773, 776);
f2(757, 776, 773);
f2(776, 666, 774);
f2(777, 774, 666);
f2(777, 833, 775);
f2(696, 689, 797);
f2(850, 673, 788);
f2(850, 788, 790);
f2(851, 850, 790);
f2(851, 790, 789);
f2(851, 789, 678);
f2(678, 789, 693);
f2(678, 693, 677);
f2(677, 693, 852);
f2(852, 693, 692);
f2(852, 692, 791);
f2(853, 852, 791);
f2(853, 792, 854);
f2(853, 791, 792);
f2(783, 800, 688);
f2(854, 783, 688);
f2(854, 792, 783);
f2(795, 688, 687);
f2(795, 854, 688);
f2(855, 854, 795);
f2(803, 845, 676);
f2(800, 675, 688);
f2(848, 847, 794);
f2(794, 847, 845);
f2(794, 845, 803);
f2(675, 846, 796);
f2(675, 796, 687);
f2(786, 794, 803);
f2(785, 794, 786);
f2(848, 794, 785);
f2(793, 674, 848);
f2(798, 848, 785);
f2(798, 793, 848);
f2(802, 793, 798);
f2(783, 792, 799);
f2(791, 801, 792);
f2(792, 801, 782);
f2(792, 782, 799);
f2(791, 692, 691);
f2(791, 691, 801);
f2(789, 781, 693);
f2(693, 781, 690);
f2(692, 690, 694);
f2(790, 788, 689);
f2(789, 790, 689);
f2(789, 689, 781);
f2(689, 695, 781);
f2(787, 673, 779);
f2(788, 673, 787);
f2(689, 788, 787);
f2(797, 787, 779);
f2(689, 787, 797);
f2(849, 674, 793);
f2(780, 849, 793);
f2(673, 849, 780);
f2(779, 673, 780);
f2(802, 780, 793);
f2(855, 795, 918);
f2(687, 796, 795);
f2(796, 749, 795);
f2(846, 752, 796);
f2(779, 746, 797);
f2(779, 780, 746);
f2(780, 802, 746);
f2(798, 785, 731);
f2(786, 735, 785);
f2(735, 731, 785);
f2(803, 735, 786);
f2(803, 784, 736);
f2(676, 675, 800);
f2(803, 676, 784);
f2(676, 800, 784);
f2(800, 743, 784);
f2(743, 736, 784);
f2(799, 800, 783);
f2(799, 782, 684);
f2(801, 684, 782);
f2(684, 801, 745);
f2(694, 745, 691);
f2(745, 801, 691);
f2(690, 734, 694);
f2(690, 733, 734);
f2(690, 781, 733);
f2(695, 733, 781);
f2(810, 906, 907);
f2(808, 810, 907);
f2(804, 805, 906);
f2(818, 814, 681);
f2(812, 818, 681);
f2(813, 724, 908);
f2(908, 809, 907);
f2(905, 806, 681);
f2(807, 806, 905);
f2(805, 807, 905);
f2(809, 808, 907);
f2(906, 805, 905);
f2(810, 804, 906);
f2(806, 812, 681);
f2(815, 817, 908);
f2(817, 813, 908);
f2(721, 727, 908);
f2(727, 809, 908);
f2(727, 804, 808);
f2(808, 804, 810);
f2(727, 808, 809);
f2(718, 727, 719);
f2(727, 807, 804);
f2(804, 807, 805);
f2(721, 908, 724);
f2(714, 716, 720);
f2(806, 718, 812);
f2(727, 718, 806);
f2(807, 727, 806);
f2(714, 720, 819);
f2(723, 719, 714);
f2(723, 714, 819);
f2(726, 717, 909);
f2(713, 726, 708);
f2(726, 711, 717);
f2(717, 711, 682);
f2(711, 815, 682);
f2(710, 720, 725);
f2(710, 725, 816);
f2(711, 710, 816);
f2(709, 711, 679);
f2(811, 709, 814);
f2(720, 710, 818);
f2(710, 811, 818);
f2(818, 811, 814);
f2(710, 709, 811);
f2(679, 712, 680);
f2(711, 712, 679);
f2(815, 908, 682);
f2(681, 814, 679);
f2(716, 813, 817);
f2(725, 716, 817);
f2(812, 819, 818);
f2(819, 720, 818);
f2(715, 724, 813);
f2(716, 715, 813);
f2(723, 819, 812);
f2(718, 723, 812);
f2(816, 725, 817);
f2(711, 816, 815);
f2(816, 817, 815);
f2(814, 709, 679);
f2(668, 821, 528);
f2(668, 528, 669);
f2(822, 669, 528);
f2(667, 822, 525);
f2(667, 525, 672);
f2(671, 672, 525);
f2(829, 671, 563);
f2(671, 525, 563);
f2(863, 670, 823);
f2(568, 664, 663);
f2(664, 568, 824);
f2(825, 568, 663);
f2(843, 565, 665);
f2(665, 565, 842);
f2(837, 833, 666);
f2(676, 846, 675);
f2(676, 845, 846);
f2(848, 674, 565);
f2(674, 849, 565);
f2(850, 567, 673);
f2(567, 849, 673);
f2(852, 566, 677);
f2(677, 566, 678);
f2(678, 566, 851);
f2(756, 865, 830);
f2(830, 865, 564);
f2(869, 870, 545);
f2(872, 871, 540);
f2(540, 871, 543);
f2(916, 542, 887);
f2(891, 885, 542);
f2(887, 542, 885);
f2(886, 887, 885);
f2(887, 886, 654);
f2(652, 654, 886);
f2(654, 652, 655);
f2(651, 655, 652);
f2(655, 651, 656);
f2(650, 656, 651);
f2(656, 650, 661);
f2(649, 661, 650);
f2(661, 649, 660);
f2(648, 660, 649);
f2(660, 648, 657);
f2(888, 657, 648);
f2(653, 657, 888);
f2(882, 541, 662);
f2(541, 883, 662);
f2(883, 533, 658);
f2(884, 658, 533);
f2(901, 511, 639);
f2(509, 505, 900);
f2(901, 900, 505);
f2(511, 643, 639);
f2(903, 643, 485);
f2(485, 643, 511);
f2(680, 904, 574);
f2(680, 574, 679);
f2(681, 679, 574);
f2(905, 681, 574);
f2(908, 573, 682);
f2(909, 682, 573);
f2(468, 527, 552);
f2(527, 468, 553);
f2(564, 834, 919);
f2(919, 830, 564);
f2(873, 869, 922);
f2(873, 922, 880);
f2(923, 659, 888);
f2(653, 888, 659);
f2(914, 659, 544);
f2(659, 923, 544);
f2(869, 889, 922);
f2(890, 544, 923);
f2(921, 532, 541);
f2(541, 537, 921);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package
Section 114
//yellowl (yellowl)
package {
import org.papervision3d.core.proto.*;
import org.papervision3d.core.geom.renderables.*;
import org.papervision3d.core.math.*;
import org.papervision3d.core.geom.*;
public class yellowl extends TriangleMesh3D {
private var ve:Array;
private var fa:Array;
public function yellowl(_arg1:MaterialObject3D, _arg2:Object=null){
super(_arg1, new Array(), new Array(), null, _arg2);
ve = this.geometry.vertices;
fa = this.geometry.faces;
v(0.280774, 0.828848, 3.492676);
v(0.273138, 0.842924, 3.515299);
v(0.320098, 0.837988, 3.407752);
v(0.29545, 0.823186, 3.455111);
v(0.285561, 1.081024, 3.456715);
v(0.255292, 1.004872, 3.531349);
v(0.269302, 0.860544, 3.527016);
v(0.264744, 1.053374, 3.499142);
v(0.265017, 0.932659, 3.53599);
v(-0.280774, 0.828848, 3.492676);
v(-0.273138, 0.842924, 3.515299);
v(-0.320098, 0.837988, 3.407752);
v(-0.29545, 0.823186, 3.455111);
v(-0.285561, 1.081024, 3.456715);
v(-0.255292, 1.004872, 3.531349);
v(-0.269302, 0.860544, 3.527016);
v(0.321206, 0.909768, 3.448249);
v(0.307712, 0.875309, 3.465341);
v(0.342148, 0.8997, 3.398536);
v(0.29242, 0.879449, 3.493208);
v(0.324148, 0.943102, 3.445557);
v(0.312916, 1.021541, 3.449333);
v(0.302461, 1.049641, 3.449773);
v(0.311976, 1.064098, 3.429566);
v(0.288508, 0.906794, 3.503684);
v(0.330162, 1.039212, 3.408923);
v(0.345906, 0.965211, 3.39646);
v(0.285051, 0.997699, 3.506628);
v(0.283838, 0.954874, 3.510079);
v(-0.264744, 1.053374, 3.499142);
v(-0.265017, 0.932659, 3.53599);
v(-0.321206, 0.909768, 3.448249);
v(-0.307712, 0.875309, 3.465341);
v(-0.342148, 0.8997, 3.398536);
v(-0.29242, 0.879449, 3.493208);
v(-0.324148, 0.943102, 3.445557);
v(-0.312916, 1.021541, 3.449333);
v(-0.302461, 1.049641, 3.449773);
v(-0.311976, 1.064098, 3.429566);
v(-0.288508, 0.906794, 3.503684);
v(-0.330162, 1.039212, 3.408923);
v(-0.345906, 0.965211, 3.39646);
v(-0.285051, 0.997699, 3.506628);
v(-0.283838, 0.954874, 3.510079);
f2(33, 31, 32);
f2(29, 14, 42);
f2(43, 14, 30);
f2(42, 14, 43);
f2(39, 30, 15);
f2(43, 30, 39);
f2(32, 34, 10);
f2(34, 15, 10);
f2(33, 32, 11);
f2(35, 31, 33);
f2(41, 35, 33);
f2(41, 36, 35);
f2(40, 36, 41);
f2(32, 10, 9);
f2(34, 39, 15);
f2(11, 32, 12);
f2(40, 38, 36);
f2(32, 9, 12);
f2(38, 13, 37);
f2(38, 37, 36);
f2(16, 18, 17);
f2(5, 7, 27);
f2(5, 28, 8);
f2(5, 27, 28);
f2(8, 24, 6);
f2(8, 28, 24);
f2(19, 17, 1);
f2(6, 19, 1);
f2(17, 18, 2);
f2(16, 20, 18);
f2(20, 26, 18);
f2(21, 26, 20);
f2(21, 25, 26);
f2(17, 0, 1);
f2(24, 19, 6);
f2(17, 2, 3);
f2(23, 25, 21);
f2(0, 17, 3);
f2(4, 23, 22);
f2(22, 23, 21);
this.x = 0;
this.y = 0;
this.z = 0;
this.rotationX = 0;
this.rotationY = 0;
this.rotationZ = 0;
this.scaleX = 1;
this.scaleY = 1;
this.scaleZ = 1;
this.geometry.ready = true;
}
public function f(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number, _arg12:Number):void{
var _local13:Triangle3D;
_local13 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, [new NumberUV(_arg4, _arg5), new NumberUV(_arg6, _arg7), new NumberUV(_arg8, _arg9)]);
_local13.faceNormal = new Number3D(_arg10, _arg11, _arg12);
fa.push(_local13);
}
public function f2(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Triangle3D;
_local4 = new Triangle3D(this, [ve[_arg1], ve[_arg2], ve[_arg3]], null, []);
fa.push(_local4);
}
public function v(_arg1:Number, _arg2:Number, _arg3:Number):void{
ve.push(new Vertex3D(_arg1, _arg2, _arg3));
}
}
}//package